Como imprimir a primeira partida e parar com o Grep

0
20


grep é um utilitário de pesquisa do Linux usado para pesquisar conteúdo. Por padrão, ele imprimirá qualquer linha que corresponda, o que pode incluir um grande número de resultados. Se você se importa apenas com a primeira correspondência, pode limitar a saída apenas à primeira linha.

Limite a saída com grep -m

a grep O comando tem um -m qualquer --max-count parâmetror, que pode resolver esse problema, mas pode não funcionar conforme o esperado.

Este parâmetro irá grep pare a correspondência depois de encontrar N linhas correspondentes, o que funciona muito bem, pois limitará a saída a uma linha, que sempre contém a primeira correspondência. Podemos verificar isso com -n banner para imprimir os números de linha.

grep -m 1 "foo" file

No entanto, isso tem algumas desvantagens que você deve estar ciente. Não para após N fósforospára após N linhas. Isso causará grep para corresponder várias vezes em cada linha, o que pode ser um problema quando usado com o -o flag, que imprime cada correspondência em uma nova linha.

Além disso, são apenas N linhas. por arquivoentão, quando usado em vários arquivos, ele imprimirá a primeira linha correspondente para cada arquivo.

Usando head para limitar a saída do grep

A alternativa é canalizar a saída para um comando diferente, head, que simplesmente cortará a entrada após N linhas. Ainda um pouco prático de usar -m 1 com grep no entanto, pois ele interromperá o processamento de arquivos grandes se uma correspondência for encontrada mais cedo.

grep "foo" file_one.txt | head -1

Isso funciona com -o sinalizador para imprimir apenas a primeira correspondência, mesmo se houver várias correspondências em um arquivo:

No entanto, tenha cuidado ao usar isso com vários arquivos. Vestindo head imprimirá a primeira linha correspondente em qualquer arquivo. Isso pode ser um problema como grep imprime a saída na ordem em que processa os arquivos e você pode não saber a ordem em que os arquivos serão processados, a menos que você os classifique manualmente antes de passá-los para grep.

Da mesma forma, você também pode usar tail para imprimir a última linha correspondente.