Una expresión regular puede ser usada como un patrón encerrandola entre barras. Entonces la expresión regular es comparada contra todo el texto de cada registro. (Normalmente, solo hace falta que case parte del texto para que el casamiento tenga éxito). Por ejemplo, esto imprime el segundo campo de cada registro que contiene ‘foo’ en cualquier parte del registro:
awk '/foo/ { print $2 }' Lista-BBS
Las expresiones regulares pueden también ser usadas en expresiones de comparación. Entonces puedes especificar la cadena contra la cual casarla; no necesita que case el registro de entrada actual completamente. Estas expresiones de comparación pueden ser usadas como patrones o en sentencias if y while.
exp ~ /regexp/
Esto es cierto si la expresión exp (tomada como una cadena de caracteres) encaja con regexp. Los siguientes ejemplo encajan o seleccionan todos los registros de entrada que contengan la letra ‘J’ en cualquier posición dentrl del primer campo:
awk '$1 ~ /J/' inventario-enviado
o sino:
awk '{ if ($1 ~ /J/) print }' inventario-enviado
exp !~ /regexp/
Esto es cierto si la expresión exp (tomada como una cadena de caracteres) no concuerda con regexp. El siguiente ejemplo encaja o selecciona todos los registros de entrada cuyo primer campo no contiene la letra ‘J’ en ninguna posición:
awk '$1 !~ /J/' inventario-enviado
La parte derecha de un operador `~' o `!~' no necesita ser una expresión regular constante (por ejemplo, una cadena de caracteres entre barras). Podría ser cualquier expresión. La expresión es evaluada, y convertida si es necesario a una cadena; los contenidos de la cadena serán utilizados como expresión regular. Una expresión regular que se comporta de esta forma es llamada expresión regular dinámica. Por ejemplo:
identifier_regexp = "[A-Za-z_][A-Za-z_0-9]+"
$0 ~ identifier_regexp
fija la variable identifier_regexp a una expresión regular que describe nombres de variables de awk, y chequea si el registro de entrada encaja con esta expresión regular.
0 Comentarios