Yhdistettyjen lausekkeiden käyttö Awkilla Linuxissa - osa 5


Olemme koko ajan tarkastelleet yksinkertaisia ilmaisuja tarkistaessamme, täyttyykö ehto vai ei. Entä jos haluat käyttää useampaa kuin yhtä lauseketta tarkistaaksesi tietyn ehdon?

Tässä artikkelissa tarkastellaan, kuinka voit yhdistää useita lausekkeiksi kutsuttuja lausekkeita tarkistaaksesi ehdon suodatettaessa tekstiä tai merkkijonoja.

Yhdistetyt lausekkeet rakennetaan Awkissa && -nimellä, johon viitataan nimellä (ja) , ja || -nimellä (tai) yhdisteoperaattorit.

Yhdistettyjen lausekkeiden yleinen syntakse on:

( first_expression ) && ( second_expression )

Täällä first_expression ja second_expression on oltava totta, jotta koko lauseke olisi totta.

( first_expression ) || ( second_expression) 

Tällöin toisen lausekkeista joko first_expression tai second_expression on oltava totta, jotta koko lauseke olisi totta.

Varoitus: Muista aina sisällyttää sulkeet.

Lausekkeet voidaan rakentaa käyttämällä vertailuoperaattoreita, joita tarkastelimme awk-sarjan osassa 4.

Saakaamme nyt selkeä käsitys käyttämällä alla olevaa esimerkkiä:

Tässä esimerkissä on tekstitiedosto nimeltä tecmint_deals.txt , joka sisältää luettelon hämmästyttävistä satunnaisista Tecmint-tarjouksista, ja se sisältää kaupan nimen, hinnan ja tyypin.

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 

Sano, että haluamme vain sellaisten tarjousten tulostamisen ja merkitsemisen, jotka ovat yli 20 dollaria ja joiden tyyppi on "Tech", käyttämällä kunkin rivin lopussa olevaa (**) -merkkiä.

Meidän on suoritettava alla oleva komento.

# 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	 *

Tässä esimerkissä olemme käyttäneet kahta lauseketta yhdistelmälausekkeessa:

  1. Ensimmäinen lauseke, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/); tarkistaa rivit, joiden tarjoukset ovat yli 20 dollaria, ja se on totta vain, jos hinta 3 dollaria, joka on hinta, vastaa mallia /^\$[2-9][0-9]*\. [0-9] [0-9] $/
  2. Ja toinen lauseke ($4 == "Tech"); tarkistaa, onko kaupan tyyppi "Tech", ja se on totta vain, jos 4 dollarin arvo on sama kuin "Tech".

Muista, että rivi merkitään vain koodilla (**) , jos ensimmäinen lauseke ja toinen lauseke ovat totta, kuten && -operaattorin periaatteessa.

Yhteenveto

Jotkut olosuhteet edellyttävät aina yhdistelmälausekkeiden rakentamista, jotta ne sopivat tarkalleen haluamaasi. Kun ymmärrät vertailu- ja yhdistettyjen lausekeoperaattorien käytön, tekstin tai merkkijonojen suodattaminen vaikeiden olosuhteiden perusteella tulee helpoksi.

Toivottavasti löydät tämän oppaan hyödylliseksi, ja jos sinulla on kysyttävää tai lisäyksiä, muista aina jättää kommentti ja huolesi ratkaistaan vastaavasti.