Com utilitzar operadors de comparació amb Awk a Linux - Part 4


Quan es tracta de valors numèrics o de cadena en una línia de text, filtrar text o cadenes amb operadors de comparació és útil per als usuaris de l'ordre Awk.

En aquesta part de la sèrie Awk, veurem com podeu filtrar text o cadenes mitjançant operadors de comparació. Si sou programador, ja heu d'estar familiaritzat amb els operadors de comparació, però els que no ho són, deixeu-me explicar-ho a la secció següent.

Els operadors de comparació a Awk s'utilitzen per comparar el valor de nombres o cadenes i inclouen el següent:

  1. >: més gran que
  2. : menys de
  3. >=: més gran o igual que
  4. : inferior o igual a
  5. ==: igual a
  6. !=: no és igual a
  7. some_value ~/pattern/: cert si algun_valor coincideix amb el patró
  8. some_value !~/pattern/: cert si some_value no coincideix amb el patró

Ara que hem mirat els diferents operadors de comparació a Awk, anem a entendre'ls millor utilitzant un exemple.

En aquest exemple, tenim un fitxer anomenat food_list.txt que és una llista de la compra per a diferents aliments i m'agradaria marcar els aliments la quantitat dels quals sigui inferior o igual a 20 afegint (**). al final de cada línia.

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 sintaxi general per utilitzar operadors de comparació a Awk és:

# expression { actions; }

Per aconseguir l'objectiu anterior, hauré d'executar l'ordre següent:

# 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 l'exemple anterior, hi ha dues coses importants que succeeixen:

  1. La primera expressió { action ; } combinació, $3 <= 30 { printf “%s\t%s\n”, $0,”**” ; } imprimeix línies amb una quantitat inferior o igual a 30 i afegeix un (**) al final de cada línia. S'accedeix al valor de la quantitat mitjançant la variable de camp $3.
  2. La segona expressió { action ; }, $3 > 30 { print $0 ;} imprimeix línies sense canvis, ja que la seva quantitat és superior a 30.

Un exemple 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 aquest exemple, volem indicar línies amb una quantitat menor o igual a 20 amb la paraula (VERTADER) al final.

Resum

Aquest és un tutorial introductori als operadors de comparació a Awk, per tant, heu de provar moltes altres opcions i descobrir-ne més.

En cas de problemes o addicions que tingueu al cap, deixeu un comentari a la secció de comentaris a continuació. Recordeu llegir la següent part de la sèrie Awk on us portaré a través d'expressions compostes.