encontra apenas a primeira ocorrência usando apenas grep

1

Suponha que eu tenha um arquivo com muitas palavras, quero encontrar apenas a primeira palavra com o padrão "xyz". Como faço se houver várias palavras com esse padrão na mesma linha? -m retorna todas as palavras na primeira linha na qual corresponde. Eu preciso apenas do comando grep.

    
por Atchyut Sreekar 12.04.2017 / 13:23

2 respostas

4

Por padrão, grep imprime as linhas correspondentes a um padrão, portanto, se o padrão aparecer uma ou mais vezes em uma linha, grep imprimirá essa linha inteira.

Adicionar o sinalizador -m 7 dirá grep para imprimir apenas as primeiras 7 linhas onde o padrão aparece.

Então, isso deve fazer o que você quer (eu não testei):

grep -o -m 1 xyz myfile | head -1

Editar: como apontado por @Kusalananda, você não precisa estritamente do -m , mas usá-lo significa que grep não precisará analisar o arquivo inteiro e produzirá o resultado mais rápido, especialmente se myfile é um arquivo grande.

    
por 12.04.2017 / 13:32
-1

A resposta para sua pergunta está na página man do grep:

$ grep -m1 'searchstring' nome_do_arquivo

A opção -m é a chave.-m1 mostrará apenas a primeira correspondência, -m 2 as duas primeiras ocorrências e assim por diante.

Espero que isso ajude você.

    
por 12.04.2017 / 14:09

Tags