Búsqueda de sitios web

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


Todo el tiempo hemos estado analizando expresiones simples al comprobar si se cumple o no una condición. ¿Qué sucede si desea utilizar más de una expresión para verificar una condición particular?

En este artículo, veremos cómo se pueden combinar múltiples 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 | | denominados operadores compuestos (o).

La sintaxis general para expresiones compuestas es:

( first_expression ) && ( second_expression )

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

( first_expression ) || ( second_expression) 

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

Precaución: Recuerda 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 el siguiente ejemplo:

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 $20 y del tipo “Tech” usando el signo (**) al final. de cada línea.

Necesitaremos 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 las 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 == “Tech”) ; comprueba si la oferta es del tipo “Tech ” y solo es verdadera si el valor de $4 es igual a “Tech ”.

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 de la 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 expresión compuesta, será fácil filtrar texto o cadenas en función de algunas condiciones difíciles.

Espero que esta guía te resulte útil y ante cualquier duda o añadido, recuerda siempre dejar un comentario y tu inquietud será resuelta como corresponde.