Com utilitzar expressions compostes amb Awk a Linux - Part 5


Durant tot el temps, hem estat mirant expressions senzilles a l'hora de comprovar si una condició s'ha complert o no. Què passa si voleu utilitzar més d'una expressió per comprovar si hi ha una condició concreta?

En aquest article, veurem com es poden combinar diverses expressions anomenades expressions compostes per comprovar si hi ha una condició en filtrar text o cadenes.

A Awk, les expressions compostes es creen utilitzant el && anomenat (i) i el || anomenat (o) operadors compostos.

La sintaxi general de les expressions compostes és:

( first_expression ) && ( second_expression )

Aquí, first_expression i second_expression han de ser certes per fer que tota l'expressió sigui certa.

( first_expression ) || ( second_expression) 

Aquí, una de les expressions first_expression o second_expression ha de ser certa perquè tota l'expressió sigui certa.

Atenció: recordeu incloure sempre els parèntesis.

Les expressions es poden crear utilitzant els operadors de comparació que vam veure a la part 4 de la sèrie awk.

Ara entenem clarament l'exemple següent:

En aquest exemple, un fitxer de text anomenat tecmint_deals.txt, que conté una llista d'algunes ofertes aleatòries de Tecmint sorprenents, inclou el nom de l'oferta, el preu i el tipus.

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 

Diguem que només volem imprimir i marcar ofertes que superin els 20 dòlars i del tipus \Tech mitjançant el signe (**) al final de cada línia.

Haurem d'executar l'ordre següent.

# 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 aquest exemple, hem utilitzat dues expressions en una expressió composta:

  1. Primera expressió, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; comprova les línies amb ofertes amb un preu superior a 20 $, i només és cert si el valor de 3 $que és el preu coincideix amb el patró /^\$[2-9][0-9]*\.[0-9] [0-9]$/
  2. I la segona expressió, ($4 == Tech); comprova si l'acord és del tipus \Tech i només és cert si el valor de $4 és igual a \Tech.

Recordeu que una línia només es marcarà amb el (**), si la primera expressió i la segona expressió són certes, tal com indica el principi de l'operador &&.

Resum

Algunes condicions sempre requereixen la creació d'expressions compostes perquè coincideixin exactament amb el que voleu. Quan enteneu l'ús dels operadors d'expressió composta i de comparació, filtrar text o cadenes en funció d'algunes condicions difícils serà fàcil.

Espero que aquesta guia us sigui útil i per a qualsevol pregunta o addició, recordeu-vos sempre de deixar un comentari i la vostra preocupació es resoldrà en conseqüència.