encontre apenas a primeira ocorrência usando apenas grep

encontre apenas a primeira ocorrência usando apenas grep

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? -mretorna todas as palavras na primeira linha em que corresponde. Eu preciso apenas do comando grep.

Responder1

Por padrão grepimprime olinhascorrespondendo a um padrão, portanto, se o padrão aparecer uma ou mais vezes em uma linha, grepimprimirá toda a linha.

Adicionar a bandeira -m 7dirá greppara 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 -msinalizador, mas usá-lo significa que grepnão será necessário analisar o arquivo inteiro e o resultado será gerado mais rapidamente, especialmente se myfilefor 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. -m1mostrará apenas a primeira correspondência, -m2as 2 primeiras ocorrências e assim por diante.

informação relacionada