2011-03-28 21 views

Respuesta

40

Sí, en awk utilice la función match() y asígnele el parámetro de matriz opcional (a en mi ejemplo). Al hacer esto, el elemento de orden 0 será la parte que coincide con la expresión regular

$ echo "blah foo123bar blah" | awk '{match($2,"[a-z]+[0-9]+",a)}END{print a[0]}' 
foo123 
+1

sé -o grep, que tiene que estar en AWK :) – Istvan

+0

@lstvan ver Boletín – SiegeX

+0

fantástico, esto es lo que necesito, tha ¡nks! – Istvan

17

Un awk específica (en contraposición a uno usando gawk) la implementación de la solución:

$ echo "blah foo123bar blah" | awk 'match($0,/[a-z]+[0-9]+/) {print substr($0,RSTART,RLENGTH)}' 
foo123 
1

utilizo esta construcción un poco:

split(substr($0, match($0, /[0-9]+ [Bb]ytes/)), a, " "); 
print a[1]; 
Cuestiones relacionadas