Considere que tenho um arquivo grande contendo informações como (parte de cat file
):
33.829037 -0.113737 1.157153
33.830036 -0.113620 1.157157
33.831036 -0.113495 1.157169
33.832035 -0.113365 1.157191
33.833035 -0.113242 1.157228
33.834034 -0.113157 1.157273
33.835033 -0.113071 1.157300
A primeira coluna contém números flutuantes em ordem crescente e suponha que eu queira remover toda a linha depois 33.832035
para que a saída seja:
33.829037 -0.113737 1.157153
33.830036 -0.113620 1.157157
33.831036 -0.113495 1.157169
33.832035 -0.113365 1.157191
Como faço isso com sed
uma ferramenta de processamento de texto apropriada?
Eu tentei excluir todas as linhas após a primeira ocorrência de uma string em uma linha , mas não consegui implementar no meu caso.
Uma pequena variante de uma das soluções para a pergunta vinculada incluirá a primeira linha correspondente:
Isso imprimirá todas as linhas até e incluindo a primeira linha contendo “33.832035” e, em seguida, sairá.
Qualquer outra linguagem de processamento de texto terá um equivalente semelhante; por exemplo em AWK:
Isso imprime cada linha (
1
, que sempre corresponde e faz com que o AWK aplique sua ação padrão, que é imprimir a linha atual) e sai quando a linha atual corresponde a “33.832035“.Em ambos os casos, você pode tornar a expressão regular mais restritiva, por exemplo
/^33.832035 /
, para corresponder apenas a um campo completo no início da linha.Awk
abordagem:Exemplo de saída: