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


Todo el tiempo, hemos estado buscando 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 particular?

En este artículo, veremos cómo puede 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 & amp; & amp; denominado (and) y < código> || conocido como (o) operadores compuestos.

La sintaxis general para expresiones compuestas es:

( first_expression ) && ( second_expression )

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

( first_expression ) || ( second_expression) 

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

rojo

Las expresiones se pueden construir utilizando 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, tenemos un archivo de texto llamado tecmint_deals.txt , que contiene una lista de algunas increíbles ofertas aleatorias de Tecmint, 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 0 y de tipo "Tech" utilizando el signo (**) al final de cada linea.

Tendremos que ejecutar el comando de abajo.

# 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 usado dos expresiones en una expresión compuesta:

  1. First expression, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; checks the for lines with deals with price above $20, and it is only true if the value of $3 which is the price matches the pattern /^\$[2-9][0-9]*\.[0-9][0-9]$/
  2. And the second expression, ($4 == “Tech”) ; checks whether the deal is of type “Tech” and it is only true if the value of $4 equals to “Tech”.

Recuerde, una línea solo se marcará con el (**) , si primera expresión y segunda expresión son verdaderas como indica el principio de Operador & amp; & amp; .

Resumen

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

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.