Cómo utilizar operadores de comparación con Awk en Linux - Parte 4


Cuando se trata de valores numéricos o de cadena en una línea de texto, filtrar texto o cadenas mediante operadores de comparación resulta útil para los usuarios del comando Awk .

En esta parte de la serie Awk, veremos cómo puede filtrar texto o cadenas utilizando operadores de comparación. Si usted es un programador, entonces ya debe estar familiarizado con los operadores de comparación, pero aquellos que no lo son, déjeme explicarlo en la sección a continuación.

Los operadores de comparación en Awk se utilizan para comparar el valor de números o cadenas e incluyen lo siguiente:

  1. > – greater than
  2. < – less than
  3. >= – greater than or equal to
  4. <= – less than or equal to
  5. == – equal to
  6. != – not equal to
  7. some_value ~ / pattern/ – true if some_value matches pattern
  8. some_value !~ / pattern/ – true if some_value does not match pattern

Ahora que hemos visto los diferentes operadores de comparación en Awk, entendámoslos mejor usando un ejemplo.

En este ejemplo, tenemos un archivo llamado food_list.txt que es una lista de compras para diferentes alimentos y me gustaría marcar los alimentos cuya cantidad es menor o igual a 20 agregando **) al final de cada línea.

food_list.txt> Archivo - food_list.txt

No      Item_Name               Quantity        Price
1       Mangoes                    45           $3.45
2       Apples                     25           $2.45
3       Pineapples                 5            $4.45
4       Tomatoes                   25           $3.45
5       Onions                     15           $1.45
6       Bananas                    30           $3.45

La sintaxis general para usar operadores de comparación en Awk es:

# expression { actions; }

Para lograr el objetivo anterior, tendré que ejecutar el siguiente comando:

# awk '$3 <= 30 { printf "%s\t%s\n", $0,"**" ; } $3 > 30 { print $0 ;}' food_list.txt

No	Item_Name`		Quantity	Price
1	Mangoes	      		   45		$3.45
2	Apples			   25		$2.45	**
3	Pineapples		   5		$4.45	**
4	Tomatoes		   25		$3.45	**
5	Onions			   15           $1.45	**
6	Bananas			   30           $3.45	**

En el ejemplo anterior, hay dos cosas importantes que suceden:

  1. The first expression { action ; } combination, $3 <= 30 { printf “%s\t%s\n”, $0,”**” ; } prints out lines with quantity less than or equal to 30 and adds a (**) at the end of each line. The value of quantity is accessed using $3 field variable.
  2. The second expression { action ; } combination, $3 > 30 { print $0 ;} prints out lines unchanged since their quantity is greater then 30.

Un ejemplo más:

# awk '$3 <= 20 { printf "%s\t%s\n", $0,"TRUE" ; } $3 > 20  { print $0 ;} ' food_list.txt 

No	Item_Name		Quantity	Price
1	Mangoes			   45		$3.45
2	Apples			   25		$2.45
3	Pineapples		   5		$4.45	TRUE
4	Tomatoes		   25		$3.45
5	Onions			   15           $1.45	TRUE
6       Bananas	                   30           $3.45

En este ejemplo, queremos indicar líneas con una cantidad menor o igual a 20 con la palabra (VERDADERO) al final.

Resumen

Este es un tutorial introductorio para operadores de comparación en Awk , por lo que debe probar muchas otras opciones y descubrir más.

En caso de que tenga algún problema o alguna adición que tenga en mente, deje un comentario en la sección de comentarios a continuación. Recuerda leer la siguiente parte de la serie Awk, donde te guiaré a través de expresiones compuestas.