AWK - Operadores lógicos

AWK admite los siguientes operadores lógicos:

Y lógico

Está representado por &&. Su sintaxis es la siguiente:

Sintaxis

expr1 && expr2

Se evalúa como verdadero si tanto expr1 como expr2 se evalúan como verdadero; de lo contrario, devuelve falso. expr2 se evalúa si y solo si expr1 se evalúa como verdadero. Por ejemplo, el siguiente ejemplo verifica si el número de un solo dígito dado está en formato octal o no.

Ejemplo

[jerry]$ awk 'BEGIN {
   num = 5; if (num >= 0 && num <= 7) printf "%d is in octal format\n", num 
}'

Al ejecutar este código, obtiene el siguiente resultado:

Salida

5 is in octal format

OR lógico

Está representado por ||. La sintaxis de Logical OR es:

Sintaxis

expr1 || expr2

Se evalúa como verdadero si expr1 o expr2 se evalúa como verdadero; de lo contrario, devuelve falso. expr2 se evalúa si y solo si expr1 se evalúa como falso. El siguiente ejemplo demuestra esto:

Ejemplo

[jerry]$ awk 'BEGIN {
   ch = "\n"; if (ch == " " || ch == "\t" || ch == "\n") 
   print "Current character is whitespace." 
}'

Al ejecutar este código, obtiene el siguiente resultado:

Salida

Current character is whitespace

NO lógico

Está representado por exclamation mark (!). El siguiente ejemplo demuestra esto:

Ejemplo

! expr1

Devuelve el complemento lógico de expr1. Si expr1 se evalúa como verdadero, devuelve 0; de lo contrario, devuelve 1. Por ejemplo, el siguiente ejemplo comprueba si una cadena está vacía o no.

Ejemplo

[jerry]$ awk 'BEGIN { name = ""; if (! length(name)) print "name is empty string." }'

Al ejecutar este código, obtiene el siguiente resultado:

Salida

name is empty string.