Estoy tratando de grep nombre de usuario:
users | grep "^\b\w*\b" -P
¿Cómo puedo hacer que solo muestre el primer partido grep
?
shell
grep
regular-expression
Yurij73
fuente
fuente
grep
?grep
es para buscar Parece que necesita cualquieracut
oawk
, pero laread
construcción también parece adecuada.users | cut -d' ' -f1
,users | sed 's/\s.*//'
,users | awk '$0=$1'
. Si desea almacenarlo en una variable, usebash
:read myVar blah < <(users)
oread myVar blah <<< $(users)
.read
ustedes no generan un nuevo proceso. Si haces esto muchas veces, notarás la diferencia.Respuestas:
Si realmente desea devolver solo la primera palabra y desea hacer esto
grep
ygrep
resulta ser una versión reciente de GNUgrep
, probablemente desee la-o
opción. Creo que puedes hacer esto sin el-P
y\b
al principio no es realmente necesario. Por lo tanto:users | grep -o "^\w*\b"
.Sin embargo, como mencionó @manatwork, el shell incorporado
read
ocut
/sed
/awk
parece ser más apropiado (particularmente una vez que llegue al punto que necesitaría hacer algo más).fuente
grep -o "[^ ]*"
Para mostrar solo la primera coincidencia con
grep
, use el-m
parámetro, por ejemplo:fuente
funcionó para mí. la primera captura del partido con:
y el último partido atrapado con
fuente
¿Por qué
grep
? Elgrep
comando es para buscar. Parece que necesita cualquieracut
oawk
, pero la lectura incorporada también parece adecuada.Compararlos:
Si desea almacenarlo en una variable, use bash:
o:
La respuesta anterior se basa en los comentarios de @manatwork .
fuente