Suponha que eu tenha um arquivo com muitas palavras, quero encontrar apenas a primeira palavra com o padrão "xyz". Como faço isso se houver várias palavras com esse padrão na mesma linha?
-m
retorna todas as palavras na primeira linha em que corresponde. Eu preciso apenas do comando grep.
Responder1
Por padrão grep
imprime olinhascorrespondendo a um padrão, portanto, se o padrão aparecer uma ou mais vezes em uma linha, grep
imprimirá toda a linha.
Adicionar a bandeira -m 7
dirá grep
para imprimir apenas as primeiras 7 linhas onde o padrão aparece.
Então isso deve fazer o que você quiser (não testei):
grep -o -m 1 xyz myfile | head -1
Editar: conforme apontado por @Kusalananda, você não precisa estritamente do -m
sinalizador, mas usá-lo significa que grep
não será necessário analisar o arquivo inteiro e o resultado será gerado mais rapidamente, especialmente se myfile
for um arquivo grande.
Responder2
A resposta à sua pergunta está na página de manual do grep:
grep -m1 'searchstring' file_name
A -m<number>
opção é a chave. -m1
mostrará apenas a primeira correspondência, -m2
as 2 primeiras ocorrências e assim por diante.