Yhdistelmälausekkeiden käyttäminen Awkin kanssa Linuxissa - Osa 5


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

Tässä artikkelissa tarkastellaan, kuinka voit yhdistää useita lausekkeita, joita kutsutaan yhdistelmälausekkeiksi, jotta voit tarkistaa ehdon, kun suodatat tekstiä tai merkkijonoja.

Awkissa yhdistetyt lausekkeet rakennetaan käyttämällä &&-merkkejä, joihin viitataan nimellä (ja) ja | | kutsutaan (tai) yhdistelmäoperaattoreiksi.

Yhdistelmälausekkeiden yleinen syntaksi on:

( first_expression ) && ( second_expression )

Tässä ensimmäinen_lauseke ja toinen_lauseke on oltava tosi, jotta koko lauseke olisi tosi.

( first_expression ) || ( second_expression) 

Tässä yhden lausekkeista joko ensimmäinen_lauseke tai toinen_lauseke on oltava tosi, jotta koko lauseke olisi tosi.

Varoitus: Muista sisällyttää aina sulut.

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

Saadaan nyt selkeä käsitys alla olevan esimerkin avulla:

Tässä esimerkissä sinulla on tekstitiedosto nimeltä tecmint_deals.txt, joka sisältää luettelon hämmästyttävistä satunnaisista Tecmint-tarjouksista. 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 tulostaa ja merkitä tarjoukset, jotka ovat yli $20 ja tyyppiä "Tech" käyttämällä (**)-merkkiä lopussa. jokaisesta rivistä.

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 yhdistelmälausekkeessa kahta lauseketta:

  1. Ensimmäinen lauseke, ($3 ~ /^\$[2-9][0-9]*\[0-9][0-9]$/) ; tarkistaa rivit, joilla on tarjouksia, joiden hinta on yli $20, ja se on totta vain, jos $3, joka on hinta, vastaa kuviota /^\$[ 2-9][0-9]*\[0-9][0-9]$/
  2. Ja toinen lauseke, ($4 == “Tech”) ; tarkistaa, onko sopimus tyyppiä "Tech", ja se on totta vain, jos arvo 4 dollaria on yhtä suuri kuin "Tech".

Muista, että rivi merkitään vain koodilla (**), jos ensimmäinen lauseke ja toinen lauseke ovat tosia, kuten lausekkeen periaate todetaan. &&-operaattori.

Yhteenveto

Jotkin ehdot edellyttävät aina yhdistelylausekkeiden muodostamista, jotta voit vastata täsmälleen haluamaasi. Kun ymmärrät vertailu- ja yhdistelmälausekeoperaattorien käytön, tekstin tai merkkijonojen suodattaminen joidenkin vaikeiden ehtojen perusteella on helppoa.

Toivottavasti tämä opas on sinulle hyödyllinen, ja jos sinulla on kysyttävää tai lisäyksiä, muista aina jättää kommentti, niin huolesi ratkaistaan vastaavasti.