bash - campos - Cómo imprimir coincidencias de expresiones regulares usando `awk`?
expresiones regulares awk (3)
Sí, en awk
use la función match()
y asígnele el parámetro array opcional ( a
en mi ejemplo). Al hacer esto, el elemento 0-ésimo será la parte que coincida con la expresión regular
$ echo "blah foo123bar blah" | awk ''{match($2,"[a-z]+[0-9]+",a)}END{print a[0]}''
foo123
Esta pregunta ya tiene una respuesta aquí:
¿Hay alguna manera de imprimir una coincidencia de expresiones regulares (pero solo la cadena correspondiente) usando el comando awk
en shell?
Una implementación específica de awk
(en oposición a una usando gawk
) de la solución:
$ echo "blah foo123bar blah" | awk ''match($0,/[a-z]+[0-9]+/) {print substr($0,RSTART,RLENGTH)}''
foo123
Yo uso este constructo bastante:
split(substr($0, match($0, /[0-9]+ [Bb]ytes/)), a, " ");
print a[1];