Estou tentando grep nome de usuário:
users | grep "^\b\w*\b" -P
Como posso mostrar apenas a primeira correspondência grep
?
shell
grep
regular-expression
Yurij73
fonte
fonte
grep
?grep
é para pesquisar. Você parece precisar de umcut
ouawk
, mas oread
built-in também parece adequado.users | cut -d' ' -f1
,users | sed 's/\s.*//'
,users | awk '$0=$1'
. Se você deseja armazená-lo em uma variável, usebash
:read myVar blah < <(users)
ouread myVar blah <<< $(users)
.read
você não gera um novo processo. Se você fizer isso muitas vezes, perceberá a diferença.Respostas:
Se você realmente deseja retornar apenas a primeira palavra e deseja fazer isso,
grep
e porgrep
acaso é uma versão recente do GNUgrep
, provavelmente deseja a-o
opção. Eu acredito que você pode fazer isso sem o-P
eo\b
no início não é realmente necessário. Assim:users | grep -o "^\w*\b"
.No entanto, como o @manatwork mencionou, o shell embutido
read
oucut
/sed
/awk
parece ser mais apropriado (principalmente quando você chega ao ponto em que precisa fazer algo mais).fonte
grep -o "[^ ]*"
Para mostrar apenas a primeira correspondência com
grep
, use o-m
parâmetro, por exemplo:fonte
funcionou para mim. a primeira partida pega com:
e a última partida pega com
fonte
Por que
grep
? Ogrep
comando é para pesquisar. Você parece precisar de umcut
ouawk
, mas a leitura incorporada também parece adequada.Compara-os:
Se você deseja armazená-lo em uma variável, usando o bash:
ou:
Resposta acima com base nos comentários @manatwork .
fonte