Come utilizzare le espressioni composte con Awk in Linux - Parte 5
Da sempre, abbiamo osservato semplici espressioni per verificare se una condizione è stata soddisfatta o meno. Cosa succede se desideri utilizzare più di un'espressione per verificare una condizione particolare?
In questo articolo, daremo un'occhiata a come combinare più espressioni chiamate espressioni composte per verificare una condizione durante il filtraggio di testo o stringhe.
In Awk, le espressioni composte sono costruite utilizzando &&
indicato come (and)
e | |
indicati come operatori composti (o)
.
La sintassi generale per le espressioni composte è:
( first_expression ) && ( second_expression )
Qui, first_expression
e second_expression
devono essere true per rendere vera l'intera espressione.
( first_expression ) || ( second_expression)
Qui, una delle espressioni first_expression
o second_expression
deve essere vera affinché l'intera espressione sia vera.
Attenzione: ricorda di includere sempre le parentesi.
Le espressioni possono essere costruite utilizzando gli operatori di confronto che abbiamo visto nella Parte 4 della serie awk.
Cerchiamo ora di comprendere meglio utilizzando l'esempio seguente:
In questo esempio, abbiamo un file di testo chiamato tecmint_deals.txt
, che contiene un elenco di alcune fantastiche offerte Tecmint casuali, include il nome dell'offerta, il prezzo e il tipo.
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
Supponiamo che desideriamo solo stampare e segnalare offerte superiori a $20 e di tipo "Tech " utilizzando il segno (**)
alla fine di ogni riga.
Dovremo eseguire il comando seguente.
# 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 *
In questo esempio, abbiamo utilizzato due espressioni in un'espressione composta:
- Prima espressione, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; controlla le righe con offerte con prezzo superiore a $20, ed è vero solo se il valore di $3, ovvero il prezzo, corrisponde al modello /^\$[ 2-9][0-9]*\.[0-9][0-9]$/
- E la seconda espressione, ($4 == “Tech”) ; controlla se l'offerta è di tipo “Tech ” ed è vera solo se il valore di $4 è uguale a “Tech ”.
Ricorda, una riga verrà contrassegnata con (**)
solo se la prima espressione e la seconda espressione sono vere come afferma il principio della Operatore &&
.
Riepilogo
Alcune condizioni richiedono sempre la creazione di espressioni composte affinché corrispondano esattamente a ciò che desideri. Una volta compreso l'uso degli operatori di confronto e delle espressioni composte, filtrare testo o stringhe in base ad alcune condizioni difficili diventerà facile.
Spero che questa guida ti sia utile e per qualsiasi domanda o aggiunta, ricordati sempre di lasciare un commento e la tua preoccupazione verrà risolta di conseguenza.