Kaip naudoti sudėtines išraiškas naudojant „Awk“ sistemoje „Linux“ – 5 dalis


Visą laiką mes žiūrėjome į paprastus posakius, kai tikrinome, ar buvo įvykdyta sąlyga, ar ne. Ką daryti, jei norite naudoti daugiau nei vieną išraišką, kad patikrintumėte, ar yra tam tikra sąlyga?

Šiame straipsnyje apžvelgsime, kaip galite sujungti kelias išraiškas, vadinamas sudėtinėmis išraiškomis, kad patikrintumėte, ar filtruojant tekstą ar eilutes yra sąlyga.

Programoje Awk sudėtinės išraiškos kuriamos naudojant &&, vadinamą (ir) ir | | vadinami (arba) sudėtiniais operatoriais.

Bendra sudėtinių išraiškų sintaksė yra tokia:

( first_expression ) && ( second_expression )

Čia first_expression ir antroji_išraiška turi būti teisingi, kad visa išraiška būtų teisinga.

( first_expression ) || ( second_expression) 

Čia viena iš pirmoji_išraiška arba antra_išraiška išraiškų turi būti teisinga, kad visa išraiška būtų teisinga.

Atsargiai: nepamirškite visada įtraukti skliaustų.

Išraiškas galima sukurti naudojant palyginimo operatorius, kuriuos peržiūrėjome awk serijos 4 dalyje.

Dabar gaukime aiškų supratimą naudodami toliau pateiktą pavyzdį:

Šiame pavyzdyje turėkite tekstinį failą pavadinimu tecmint_deals.txt, kuriame yra keletas nuostabių atsitiktinių Tecmint pasiūlymų sąrašas, kuriame yra sandorio pavadinimas, kaina ir tipas.

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 

Tarkime, kad norime tik spausdinti ir pažymėti pasiūlymus, kurių kaina viršija 20 USD ir kurių tipas yra „Tech“, naudojant ženklą (**) pabaigoje. kiekvienos eilutės.

Turėsime paleisti toliau pateiktą komandą.

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

Šiame pavyzdyje sudėtinėje išraiškoje panaudojome dvi išraiškas:

  1. Pirmoji išraiška, ($3 ~ /^\$[2-9][0-9]*\[0-9][0-9]$/) ; tikrina eilutes su pasiūlymais, kurių kaina didesnė nei 20 USD, ir tai tiesa, tik jei 3 USD vertė, kuri yra kaina, atitinka šabloną /^\$[ 2-9][0-9]*\.[0-9][0-9]$/
  2. Ir antroji išraiška, ($4 == „Tech“) ; patikrina, ar sandorio tipas yra „Tech“, ir tai teisinga, tik jei 4 USD vertė yra „Tech“.

Atminkite, kad eilutė bus pažymėta tik (**), jei pirma išraiška ir antra išraiška yra teisingos, kaip teigiama operatorius &&.

Santrauka

Tam tikromis sąlygomis visada reikia sudaryti sudėtines išraiškas, kad jos tiksliai atitiktų tai, ko norite. Kai suprasite palyginimo ir sudėtinių išraiškų operatorių naudojimą, bus lengva filtruoti tekstą ar eilutes pagal sudėtingas sąlygas.

Tikimės, kad šis vadovas jums bus naudingas ir, jei turite klausimų ar papildymų, visada nepamirškite palikti komentaro ir jūsų rūpestis bus atitinkamai išspręstas.