Kā lietot saliktas izteiksmes ar Awk Linux - 5. daļa


Visu laiku mēs pārbaudījām vienkāršus izteicienus, pārbaudot, vai kāds nosacījums ir izpildīts vai nē. Ko darīt, ja vēlaties izmantot vairāk nekā vienu izteicienu, lai pārbaudītu noteiktu stāvokli?

Šajā rakstā mēs aplūkosim, kā jūs varat apvienot vairākas izteiksmes, kas tiek dēvētas par saliktām izteiksmēm, lai pārbaudītu nosacījumu, filtrējot tekstu vai virknes.

Programmā Awk saliktie izteicieni tiek veidoti, izmantojot && , kas apzīmēti kā (un) , un || , kas apzīmēts kā (vai) saliktie operatori.

Apvienoto izteicienu vispārējā sintakse ir šāda:

( first_expression ) && ( second_expression )

Šeit, lai padarītu visu izteiksmi patiesu, first_expression un second_expression jābūt patiesām.

( first_expression ) || ( second_expression) 

Vienai no izteiksmēm first_expression vai second_expression jābūt patiesām, lai visa izteiksme būtu patiesa.

Uzmanību: atcerieties vienmēr iekļaut iekavas.

Izteiksmes var veidot, izmantojot salīdzināšanas operatorus, kurus aplūkojām awk sērijas 4. daļā.

Ļaujiet mums tagad iegūt skaidru izpratni, izmantojot tālāk sniegto piemēru:

Šajā piemērā ir teksta fails ar nosaukumu tecmint_deals.txt , kurā ir saraksts ar dažiem pārsteidzošiem nejaušiem Tecmint piedāvājumiem, tajā ir iekļauts darījuma nosaukums, cena un tips.

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 

Pieņemsim, ka mēs vēlamies drukāt un atzīmēt tikai tos darījumus, kuru summa pārsniedz 20 USD un kuru tips ir “Tech”, izmantojot katras rindas beigās esošo zīmi (**) .

Mums būs jāizpilda zemāk esošā komanda.

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

Šajā piemērā saliktā izteiksmē esam izmantojuši divus izteicienus:

  1. Pirmā izteiksme, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/); pārbauda rindas ar darījumiem, kuru cena pārsniedz 20 ASV dolārus, un tā ir taisnība tikai tad, ja 3 USD vērtība, kas ir cena, atbilst paraugam /^\$[2-9][0-9]*\. [0-9] [0-9] $/
  2. Un otrais izteiciens ($4 == “Tech”); pārbauda, vai darījums ir “Tech” tips, un tas ir taisnība tikai tad, ja USD 4 vērtība ir vienāda ar “Tech”.

Atcerieties, ka ar (**) līnija tiks atzīmēta tikai tad, ja pirmā izteiksme un otrā izteiksme ir patiesa, kā norādīts operatora && principā.

Kopsavilkums

Daži apstākļi vienmēr prasa salikto izteiksmju veidošanu, lai tie precīzi atbilstu vēlamajam. Kad jūs saprotat salīdzināšanas un salikto izteiksmju operatoru lietošanu, teksta vai virkņu filtrēšana, pamatojoties uz dažiem sarežģītiem apstākļiem, kļūs vienkārša.

Ceru, ka šī rokasgrāmata jums būs noderīga, un, ja rodas jautājumi vai papildinājumi, vienmēr atcerieties atstāt komentāru, un jūsu rūpes tiks attiecīgi atrisinātas.