Hvernig á að nota samsettar tjáningar með Awk í Linux - Part 5


Allan tímann höfum við verið að skoða einföld orðatiltæki þegar athugað er hvort skilyrði hafi verið uppfyllt eða ekki. Hvað ef þú vilt nota fleiri en eina tjáningu til að athuga hvort tiltekið ástand sé í?

Í þessari grein munum við skoða hvernig þú getur sameinað margar tjáningar sem vísað er til sem samsettar tjáningar til að athuga hvort ástand sé þegar síað er texta eða strengi.

Í Awk eru samsett orðatiltæki byggð með && sem vísað er til sem (og) og || sem vísað er til sem (eða) samsettir rekstraraðilar.

Almenn setningafræði fyrir samsettar tjáningar er:

( first_expression ) && ( second_expression )

Hér verða first_expression og second_expression að vera satt til að öll tjáningin sé sönn.

( first_expression ) || ( second_expression) 

Hér verður eitt af tjáningunum annaðhvort first_expression eða second_expression að vera satt til að öll tjáningin sé sönn.

Varúð: Mundu að hafa alltaf svigann með.

Hægt er að byggja upp tjáningarnar með því að nota samanburðaraðgerðirnar sem við skoðuðum í 4. hluta af awk röðinni.

Við skulum nú fá skýran skilning með því að nota dæmi hér að neðan:

Í þessu dæmi, a hafa textaskrá sem heitir tecmint_deals.txt, sem inniheldur lista yfir ótrúlega handahófi Tecmint tilboð, það inniheldur nafn samningsins, verð og tegund.

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 

Segðu að við viljum aðeins prenta og flagga tilboð sem eru yfir $20 og af gerðinni „Tech“ með því að nota (**) táknið í lok hverrar línu.

Við þurfum að keyra skipunina hér að neðan.

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

Í þessu dæmi höfum við notað tvær tjáningar í samsettri tjáningu:

  1. Fyrsta tjáning, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; athugar fyrir línur með tilboðum með verð yfir $20, og það er aðeins satt ef verðmæti $3 sem er verðið samsvarar mynstrinu /^\$[2-9][0-9]*\.[0-9] [0-9]$/
  2. Og önnur tjáningin, ($4 == „Tækni“) ; athugar hvort samningurinn sé af gerðinni „Tech“ og það er aðeins satt ef verðmæti $4 jafngildir „Tech“.

Mundu að lína verður aðeins merkt með (**), ef fyrsta tjáning og önnur segð eru sannar eins og segir í meginreglunni um && rekstraraðila.

Samantekt

Sumar aðstæður krefjast alltaf að byggja upp samsettar tjáningar til að þú passi nákvæmlega við það sem þú vilt. Þegar þú skilur notkun samanburðar- og samsettra tjáningaraðgerða verður auðvelt að sía texta eða strengi út frá erfiðum aðstæðum.

Vona að þér finnist þessi handbók gagnleg og fyrir allar spurningar eða viðbætur, mundu alltaf að skilja eftir athugasemd og áhyggjur þínar verða leystar í samræmi við það.