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 los que no lo son, permítanme explicarles en la sección siguiente.

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

  1. > - mayor que
  2. <: menor que
  3. > u003d : mayor o igual que
  4. : menor o igual que
  5. u003du003d - igual a
  6. ! u003d : no es igual a
  7. algún_valor ~/patrón/: verdadero si algún_valor coincide con el patrón
  8. some_value! ~/pattern/ - verdadero si some_value no coincide con el patrón

Ahora que hemos visto los distintos operadores de comparación en Awk, comprendamos mejor con 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.

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, suceden dos cosas importantes:

  1. La primera expresión {acción; } combinación, $3
  2. La segunda expresión {acción; } combinación, $3> 30 {print $0;} imprime líneas sin cambios ya que su cantidad es mayor que 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 de introducción a los operadores de comparación en Awk, por lo tanto, debe probar muchas otras opciones y descubrir más.

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