separador regulares expresiones campos cadena buscar bash shell awk

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];