Jinsi ya kutumia Amri inayofuata na Awk kwenye Linux - Sehemu ya 6


Katika sehemu hii ya sita ya mfululizo wa Awk, tutaangalia kutumia ijayo amri, ambayo inamwambia Awk kuruka ruwaza na misemo yote iliyosalia ambayo umetoa, lakini badala yake soma mstari unaofuata wa ingizo.

Amri ya ijayo hukusaidia kuzuia kutekeleza kile ningerejelea kama hatua za kupoteza wakati katika utekelezaji wa amri.

Ili kuelewa jinsi inavyofanya kazi, hebu tuzingatie faili inayoitwa food_list.txt ambayo inaonekana kama hii:

No      Item_Name               Price           Quantity
1       Mangoes                 $3.45              5
2       Apples                  $2.45              25
3       Pineapples              $4.45              55
4       Tomatoes                $3.45              25
5       Onions                  $1.45              15
6       Bananas                 $3.45              30

Fikiria kutekeleza amri ifuatayo ambayo itaalamisha bidhaa za chakula ambazo idadi yake ni chini ya au sawa na 20 kwa alama ya (*) mwishoni mwa kila mstari:

# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; } $4 > 20 { print $0 ;} ' food_list.txt 

No	Item_Name		Price		Quantity
1	Mangoes			$3.45		   5	*
2	Apples			$2.45              25
3	Pineapples		$4.45              55
4	Tomatoes		$3.45              25 
5	Onions			$1.45              15	*
6	Bananas	                $3.45              30

Amri hapo juu inafanya kazi kama ifuatavyo:

  1. Kwanza, inakagua kama idadi, sehemu ya nne ya kila mstari wa ingizo ni chini ya au sawa na 20, ikiwa thamani inakidhi hali hiyo, inachapishwa na kualamishwa kwa alama ya (*) mwishoni kwa kutumia usemi wa kwanza: $4 <= 20
  2. Pili, hukagua ikiwa sehemu ya nne ya kila mstari wa ingizo ni kubwa kuliko 20, na ikiwa laini inatimiza masharti itachapishwa kwa kutumia usemi wa pili: $4 > 20

Lakini kuna tatizo moja hapa, usemi wa kwanza unapotekelezwa, mstari ambao tunataka kualamisha huchapishwa kwa kutumia: { printf \%s\t%s\n\n\, $0,\**\ ; } na kisha katika hatua hiyo hiyo, usemi wa pili pia huangaliwa ambayo huwa sababu ya kupoteza muda.

Kwa hivyo hakuna haja ya kutekeleza usemi wa pili, $4 > 20 tena baada ya kuchapisha mistari ambayo tayari imealamishwa ambayo imechapishwa kwa kutumia usemi wa kwanza.

Ili kukabiliana na tatizo hili, inabidi utumie ijayo amri kama ifuatavyo:

# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; next; } $4 > 20 { print $0 ;} ' food_list.txt

No	Item_Name		Price		Quantity
1	Mangoes			$3.45		   5	*
2	Apples			$2.45              25
3	Pineapples		$4.45              55
4	Tomatoes		$3.45              25 
5	Onions			$1.45              15	*
6	Bananas	                $3.45              30

Baada ya mstari mmoja wa ingizo kuchapishwa kwa kutumia $4 <= 20 { printf \%s\t%s\n\n\, $0,\*\ ; ijayo; }, ijayo amri iliyojumuishwa itasaidia kuruka usemi wa pili $4 > 20 { print $0 ;}, ili utekelezaji uende kwa mstari unaofuata wa ingizo bila kupoteza muda kuangalia ikiwa idadi ni kubwa kuliko 20.

Amri inayofuata ni muhimu sana ni kuandika amri zinazofaa na inapobidi, unaweza kutumia kila wakati kuharakisha utekelezaji wa hati. Jitayarishe kwa sehemu inayofuata ya mfululizo ambapo tutaangalia kutumia ingizo la kawaida (STDIN) kama ingizo la Awk.

Natumai utapata hii jinsi ya kuongoza kusaidia na unaweza kama kawaida kuweka mawazo yako kwa maandishi kwa kuacha maoni katika sehemu ya maoni hapa chini.