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?grepes para buscar Parece que necesita cualquieracutoawk, pero lareadconstrucció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).readustedes 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
grepygrepresulta ser una versión reciente de GNUgrep, probablemente desee la-oopción. Creo que puedes hacer esto sin el-Py\bal principio no es realmente necesario. Por lo tanto:users | grep -o "^\w*\b".Sin embargo, como mencionó @manatwork, el shell incorporado
readocut/sed/awkparece 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-mparámetro, por ejemplo:fuente
funcionó para mí. la primera captura del partido con:
y el último partido atrapado con
fuente
¿Por qué
grep? Elgrepcomando es para buscar. Parece que necesita cualquieracutoawk, 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