GNU/Linux >> Tutoriales Linux >  >> Linux

¿Puede GNU Grep generar un grupo seleccionado?

Puedes usar sed para esto. En BSD sed :

echo "foo 'bar'" | sed -E "s/.*'([^']+)'.*/\\1/"

O, sin el -E opción:

sed "s/.*'\([^']\+\)'.*/\1/"

Esto no funciona para la entrada multilínea. Para eso necesitas:

sed -n "s/.*'\([^']\+\)'.*/\1/p"

Si bien grep no puede generar un grupo específico, puede usar aserciones anticipadas y subyacentes para lograr lo que busca:

echo "foo 'bar'" | grep -Po "(?<=')[^']+(?=')"


Puedes usar \K para restablecer y descartar el texto de coincidencia de la izquierda junto con una búsqueda anticipada que no se agrega al texto de coincidencia:

$ echo "foo 'bar'" | grep -oP "'\K[^']+(?=')"
bar

GNU grep solamente.


Linux
  1. ¿Puede Sed reemplazar los caracteres de nueva línea?

  2. ¿Limitar la salida de búsqueda y evitar la señal 13?

  3. ¿Cómo iniciar Grep de subprocesos múltiples en la terminal?

  4. ¿Extraer subcadena según Regexp con Sed o Grep?

  5. ¿Colorear la salida de la cola con Sed?

¿Cómo resaltar una palabra en la salida de "gato"?

¿Capturar grupos con Awk o Grep?

¿Cómo evitar que sed almacene en búfer?

¿Cómo canalizar la salida de grep a cp?

¿Cómo puedo filtrar resultados únicos de la salida grep?

salida grep de largo a ancho