Expresiones de Comparación como Patrones - AWK

Los patrones de comparación chequean relaciones tales como igualdad entre dos cadenas o números. Son un caso especial de patrones de expresiones. Ellos son escritos con operadores relacionales, los cuales son un superconjunto de los mismos en C. Aquí tienes una tabla de ellos:

x < y
Verdad si x es menor que y.
x <= y
Verdad si x es menor o igual que y.
x > y
Verdad si x es mayor que y.
x >= y
Verdad si x es mayor o igual que y.
x == y
Verdad si x es igual a y.
x != y
Verdad si x no es igual a y.
x ~ y
Verdad si x encaja con la expresión regular descrita por y.
x !~ y
Verdad si x no encaja con la expresión regular descrita por y.

Los operandos de un operador relacional son comparados como números si ambos son números. Si no ellos son convertidos y comparados como cadenas. Las cadenas son comparadas comparando el primer carácter de ambas, después el segundo carácter de ellas y así sucesivamente, hasta que encuentre una diferencia. Si las dos cadenas son iguales hasta que se acaba la cadena más corta, la cadena más corta se considera menor que la más larga. Por lo que “10” es menor que “9”.
 
El operando izquierdo de los operadores `~' y `!~' es una cadena. El operador derecho es o una expresión regular constante encerrada entre barras (/expreg/), o cualquier expresión, cuyo valor como cadena se usa como una expresión regular dinámica
El siguiente ejemplo imprime el segundo campo de cada registro de entrada cuyo primer campo valga justamente ‘foo’.

awk '$1 == "foo" { print $2 }' Lista-BBS

Constrasta esto con el siguiente encaje de expresión regular, el cual aceptaría cualquier registro con un primer campo que contuviese la cadena ‘foo’.

awk '$1 ~ "foo" { print $2 }' Lista-BBS

o, equivalentemente, este:

awk '$1 ~ /foo/ { print $2 }' Lista-BBS

Publicar un comentario

0 Comentarios