Ricerca nel sito web

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:

  1. 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]$/
  2. 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.