Como imprimir apenas a primeira correspondência com grep

4

Estou tentando usar o nome de usuário do grep:

users | grep "^\b\w*\b" -P

Como posso fazer isso para mostrar apenas a primeira correspondência com grep ?

    
por Yurij73 07.12.2012 / 13:18

3 respostas

7

Se você realmente quiser retornar apenas a primeira palavra e quiser fazer isso com grep e sua grep for uma versão recente do GNU grep , provavelmente você desejará a opção -o . Eu acredito que você pode fazer isso sem o -P e o \b no começo não é realmente necessário. Portanto: users | grep -o "^\w*\b" .

No entanto, como @manatwork mencionou, o shell embutido read ou cut / sed / awk parece ser mais apropriado (especialmente quando você chega ao ponto em que precisa fazer algo mais ).

    
por 07.12.2012 / 13:38
16

Para mostrar apenas a primeira correspondência com grep , use o parâmetro -m , por exemplo:

grep -m1 pattern file

-m num, --max-count=num

Stop reading the file after num matches.

    
por 18.10.2015 / 14:35
0

Por que grep ? O comando grep é para pesquisa. Você parece precisar de cut ou awk , mas a leitura incorporada também parece adequada.

Compare-os:

users | cut -d' ' -f1
users | sed 's/\s.*//'
users | awk '$0=$1'

Se você quiser armazená-lo em uma variável, usando o bash:

read myVar blah < <(users)

ou:

read myVar blah <<< $(users). 

Acima da resposta com base em @ comentários do manatwork .

    
por 13.04.2017 / 14:37