Jinsi ya Kutumia Maneno ya Mchanganyiko na Awk kwenye Linux - Sehemu ya 5


Muda wote, tumekuwa tukiangalia misemo rahisi wakati wa kuangalia ikiwa hali imefikiwa au la. Je, ikiwa unataka kutumia usemi zaidi ya mmoja ili kuangalia hali fulani?

Katika makala haya, tutaangalia jinsi unavyoweza kuchanganya misemo mingi inayojulikana kama misemo changamano ili kuangalia hali wakati wa kuchuja maandishi au mifuatano.

Katika Awk, maneno ambatani hujengwa kwa kutumia && inayojulikana kama (na) na || inayojulikana kama (or) waendeshaji kiwanja.

Sintaksia ya jumla ya semi ambatani ni:

( first_expression ) && ( second_expression )

Hapa, first_expression na second_expression lazima ziwe kweli ili kufanya usemi mzima kuwa kweli.

( first_expression ) || ( second_expression) 

Hapa, mojawapo ya maneno ama first_expression au second_expression lazima iwe kweli ili usemi wote uwe kweli.

Tahadhari: Kumbuka kila wakati kujumuisha mabano.

Semi zinaweza kutengenezwa kwa kutumia viendeshaji ulinganisho ambavyo tuliangalia katika Sehemu ya 4 ya mfululizo wa awk.

Wacha sasa tupate ufahamu wazi kwa kutumia mfano hapa chini:

Katika mfano huu, kuwa na faili ya maandishi iitwayo tecmint_deals.txt, ambayo ina orodha ya ofa za nasibu za Tecmint, inajumuisha jina la mpango huo, bei na aina.

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 

Sema kwamba tunataka tu ofa za kuchapisha na kuripoti ambazo ni zaidi ya $20 na za aina ya \Tech kwa kutumia alama ya (**) mwishoni mwa kila mstari.

Tutahitaji kuendesha amri hapa chini.

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

Katika mfano huu, tumetumia misemo miwili katika usemi changamano:

  1. Usemi wa kwanza, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; hukagua laini zilizo na bei ya zaidi ya $20, na ni kweli ikiwa tu thamani ya $3 ambayo ni bei inalingana na muundo /^\$[2-9][0-9]*\.[0-9] [0-9]$/
  2. Na usemi wa pili, ($4 == “Tech”) ; hukagua kama mpango huo ni wa aina ya \Tech na ni kweli ikiwa tu thamani ya $4 ni sawa na \Tech.

Kumbuka, mstari utaalamishwa tu na (**), ikiwa usemi wa kwanza na usemi wa pili ni kweli kama inavyoeleza kanuni ya && opereta.

Muhtasari

Baadhi ya masharti kila mara yanahitaji kujenga misemo changamano ili ulingane na kile unachotaka. Unapoelewa matumizi ya kulinganisha na viendeshaji vya usemi kiwanja basi, kuchuja maandishi au mifuatano kulingana na hali fulani ngumu itakuwa rahisi.

Natumai utapata mwongozo huu kuwa muhimu na kwa maswali yoyote au nyongeza, kumbuka kila wakati kuacha maoni na wasiwasi wako utatatuliwa ipasavyo.