Expresiones de Comparación - AWK

Expresiones de comparación comparan cadenas o números para relaciones tales como la igualdad. Se escriben usando operadores relacionales, los cuales son un superconjunto de los de 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 la cadena x encaja con la expresion regular representada por y
x !~ y
Verdad si la cadena x no encaja con la expresión regular representada por y
subíndice in array
Verdad si el array array tiene un elemento con el subíndice subíndice.

La expresiones de comparación tienen el valor 1 si son ciertas y 0 sin son falsas.
Los operandos de un operador relacional son comparados como números si ambos son números. Sino, son convertidos y comparados como cadenas.
Las cadenas son comparadas comparando el primer carácter de cada una, después el segundo carácter de cada una, y así sucesivamente. Por lo que, “10” es menor que “9”.
Por ejemplo,

$1 == "foo"

tiene el valor de 1, o es cierto, si el primer campo del registro de entrada actual es precisamente ‘foo’. En contraposición,

$1 ~ /foo/

tiene el valor 1 si el primer campo contiene ‘foo’.
La parte derecha de los operadores ‘~’ y ‘!~’ podría ser una expresión regular constante (/…/) o una expresión ordinaria, en cuyo caso el valor de la expresión como una cadena es una expresión regular dinámica

En implementaciones de awk muy recientes, una expresión regular constante entre barras por si misma es también una expresión. La expresión regular /expreg/ es una abreviación de esta expresión de comparación:

$0 ~ /expreg/

En algunos contextos podría ser necesario escribir paréntesis alrededor de la expresión regular para evitar confundir al analizador de sentencias de awk. Por ejemplo, (/x/ - /y/) > umbral no está permitido, pero ((/x/)

- (/y/)) > umbral si es aceptado por el analizador de sentencias.
Un sitio especial donde /foo/ no es una abreviación de $0 ~ /foo/ es cuando es el operador de la derecha de `~' o `!~'!













Publicar un comentario

0 Comentarios