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:
>
: més gran que: menys de
>=
: més gran o igual que=
: inferior o igual a==
: igual a!=
: no és igual asome_value ~/pattern/
: cert si algun_valor coincideix amb el patró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:
- 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.
- 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.