Weboldal keresés

Összetett kifejezések használata az Awk-val Linuxban – 5. rész


Végig egyszerű kifejezéseket vizsgáltunk, amikor ellenőriztük, hogy egy feltétel teljesült-e vagy sem. Mi a teendő, ha egynél több kifejezést szeretne használni egy adott feltétel ellenőrzéséhez?

Ebben a cikkben megvizsgáljuk, hogyan kombinálhat több, összetett kifejezésként emlegetett kifejezést, hogy ellenőrizze a feltételt a szöveg vagy karakterláncok szűrésekor.

Az Awk-ban az összetett kifejezések a &&, azaz (és) és a | | (vagy) összetett operátorként hivatkozva.

Az összetett kifejezések általános szintaxisa a következő:

( first_expression ) && ( second_expression )

Itt az első_kifejezés és a második_kifejezés értéknek igaznak kell lennie ahhoz, hogy az egész kifejezés igaz legyen.

( first_expression ) || ( second_expression) 

Itt az első_kifejezés vagy a második_kifejezés kifejezések egyikének igaznak kell lennie ahhoz, hogy az egész kifejezés igaz legyen.

Vigyázat: Ne felejtse el mindig a zárójelet feltüntetni.

A kifejezéseket az awk sorozat 4. részében megvizsgált összehasonlító operátorokkal lehet felépíteni.

Hadd értsük meg most világosan az alábbi példát:

Ebben a példában van egy tecmint_deals.txt nevű szöveges fájl, amely néhány csodálatos véletlenszerű Tecmint-ügylet listáját tartalmazza, tartalmazza az ügylet nevét, árat és típusát.

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 

Tegyük fel, hogy csak a 20 USD feletti és „Tech ” típusú ügyleteket szeretnénk kinyomtatni és megjelölni, a végén található (**) jellel minden sorból.

Az alábbi parancsot kell futtatnunk.

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

Ebben a példában két kifejezést használtunk egy összetett kifejezésben:

  1. Első kifejezés: ($3 ~ /^\$[2-9][0-9]*\[0-9][0-9]$/) ; ellenőrzi a for sorokat 20 USD feletti árú ügyletekkel, és ez csak akkor igaz, ha a 3 USD értéke, amely az ár megegyezik a /^\$[ mintával 2-9][0-9]*\[0-9][0-9]$/
  2. És a második kifejezés: ($4 == „Tech”) ; ellenőrzi, hogy az ügylet „Tech ” típusú-e, és csak akkor igaz, ha a 4 USD értéke egyenlő a „Tech ” értékkel.

Ne feledje, egy sor csak akkor lesz megjelölve (**)-val, ha az első kifejezés és a második kifejezés igaz, ahogyan a && operátor.

Összegzés

Bizonyos feltételek mindig megkövetelik az összetett kifejezések létrehozását, hogy pontosan megfeleljenek a kívántnak. Ha megérti az összehasonlító és összetett kifejezési operátorok használatát, akkor a szövegek vagy karakterláncok bizonyos nehéz feltételek alapján történő szűrése egyszerűvé válik.

Reméljük, hogy hasznosnak találja ezt az útmutatót, és bármilyen kérdése vagy kiegészítése esetén mindig ne felejtsen el megjegyzést írni, és aggodalmát ennek megfelelően megoldjuk.