Cómo usar expresiones compuestas con Awk en Linux - Parte 5


Todo el tiempo, hemos estado observando expresiones simples al verificar si una condición se ha cumplido o no. ¿Qué sucede si desea usar más de una expresión para verificar una condición en particular?

En este artículo, veremos cómo se pueden combinar varias expresiones denominadas expresiones compuestas para verificar una condición al filtrar texto o cadenas.

En Awk, las expresiones compuestas se crean utilizando el && denominado (y) y el || denominado (o) operadores compuestos.

La sintaxis general de las expresiones compuestas es:

( first_expression ) && ( second_expression )

Aquí, first_expression y second_expression deben ser verdaderas para que toda la expresión sea verdadera.

( first_expression ) || ( second_expression) 

Aquí, una de las expresiones, ya sea first_expression o second_expression debe ser verdadera para que toda la expresión sea verdadera.

Precaución: Recuerde incluir siempre el paréntesis.

Las expresiones se pueden construir usando los operadores de comparación que vimos en la Parte 4 de la serie awk.

Ahora obtengamos una comprensión clara usando un ejemplo a continuación:

En este ejemplo, tiene un archivo de texto llamado tecmint_deals.txt , que contiene una lista de algunas ofertas increíbles de Tecmint al azar, que incluye el nombre de la oferta, el precio y el tipo.

No      Name                                    Price           Type
1       Mac_OS_X_Cleanup_Suite                  $9.99           Software
2       Basics_Notebook                         $14.99          Lifestyle
3       Tactical_Pen                            $25.99          Lifestyle
4       Scapple                                 $19.00          Unknown
5       Nano_Tool_Pack                          $11.99          Unknown
6       Ditto_Bluetooth_Altering_Device         $33.00          Tech
7       Nano_Prowler_Mini_Drone                 $36.99          Tech 

Digamos que solo queremos imprimir y marcar ofertas que estén por encima de $20 y del tipo "Tech" usando el signo (**) al final de cada línea.

Tendremos que ejecutar el siguiente comando.

# awk '($3 ~ /^$[2-9][0-9]*\.[0-9][0-9]$/) && ($4=="Tech") { printf "%s\t%s\n",$0,"*"; } ' tecmint_deals.txt 

6	Ditto_Bluetooth_Altering_Device		$33.00		Tech	*
7	Nano_Prowler_Mini_Drone			$36.99          Tech	 *

En este ejemplo, hemos utilizado dos expresiones en una expresión compuesta:

  1. Primera expresión, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/); comprueba si hay líneas con ofertas con precios superiores a $20, y solo es cierto si el valor de $3, que es el precio, coincide con el patrón /^\$[2-9][0-9]*\.[0-9] [0-9] $/
  2. Y la segunda expresión, ($4 u003du003d “Tecnología”); comprueba si la oferta es del tipo "Tecnología" y solo es cierta si el valor de $4 es igual a "Tecnología".

Recuerde, una línea solo se marcará con el (**) , si la primera expresión y la segunda expresión son verdaderas como establece el principio del operador && .

Resumen

Algunas condiciones siempre requieren la creación de expresiones compuestas para que coincida exactamente con lo que desea. Cuando comprenda el uso de operadores de comparación y de expresión compuesta, el filtrado de texto o cadenas en función de algunas condiciones difíciles será más fácil.

Espero que encuentre útil esta guía y para cualquier pregunta o adición, recuerde siempre dejar un comentario y su inquietud se resolverá en consecuencia.