Giunsa Paggamit ang sunod nga Command sa Awk sa Linux - Bahin 6


Niining ikaunom nga bahin sa serye sa Awk, atong tan-awon ang paggamit sa next command, nga nagsulti sa Awk nga laktawan ang tanan nga nahabilin nga mga pattern ug ekspresyon nga imong gihatag, apan basaha ang sunod nga linya sa input.

Ang next command makatabang nimo sa pagpugong sa pag-execute sa akong gitawag nga pag-usik sa oras nga mga lakang sa usa ka command execution.

Aron masabtan kung giunsa kini paglihok, atong tagdon ang usa ka file nga gitawag og food_list.txt nga ingon niini:

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

Ikonsiderar ang pagpadagan sa mosunod nga sugo nga mag-flag sa mga pagkaon nga ang gidaghanon mas ubos o katumbas sa 20 nga adunay (*) nga timaan sa katapusan sa matag linya:

# 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

Ang sugo sa ibabaw aktuwal nga naglihok sama sa mosunod:

  1. Una, gisusi niini kung ang gidaghanon, ikaupat nga field sa matag linya sa pag-input mas ubos o katumbas sa 20, kung ang usa ka kantidad makatagbo sa kana nga kondisyon, kini giimprinta ug gi-flag gamit ang (*) sign sa katapusan gamit ang ekspresyon usa: $4 <= 20
  2. Ikaduha, kini magsusi kon ang ikaupat nga field sa matag input line mas dako pa sa 20, ug kon ang usa ka linya makaabot sa kondisyon nga kini maimprinta gamit ang ekspresyong duha: $4 > 20

Apan adunay usa ka problema dinhi, kung ang una nga ekspresyon gipatuman, usa ka linya nga gusto namong i-flag ang giimprinta gamit ang: { printf \%s\t%s\n\, $0,\**\ ; } ug dayon sa samang lakang, ang ikaduhang ekspresyon gisusi usab nga nahimong hinungdan sa pag-usik sa oras.

Busa dili na kinahanglan nga ipatuman ang ikaduhang ekspresyon, $4 > 20 pag-usab human sa pag-imprenta sa na-flag na nga mga linya nga naimprinta gamit ang unang ekspresyon.

Aron masulbad kini nga problema, kinahanglan nimong gamiton ang next command sama sa mosunod:

# 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

Human maimprinta ang usa ka linya sa input gamit ang $4 <= 20 { printf \%s\t%s\n\, $0,\*\ ; sunod ; }, ang next command nga gilakip makatabang sa paglaktaw sa ikaduhang ekspresyon $4 > 20 { print $0 ;}, mao nga ang pagpatuman moadto sa ang sunod nga linya sa pag-input nga dili kinahanglan nga mag-usik og oras sa pagsusi kung ang gidaghanon labaw pa sa 20.

Ang sunod nga sugo importante kaayo mao ang pagsulat sa episyente nga mga sugo ug kung gikinahanglan, kanunay nimong gamiton aron mapadali ang pagpatuman sa usa ka script. Pag-andam alang sa sunod nga bahin sa serye diin atong tan-awon ang paggamit sa standard input (STDIN) isip input para sa Awk.

Paglaum nga makit-an nimo kini kung giunsa ang paggiya makatabang ug mahimo nimo nga isulat ang imong mga hunahuna pinaagi sa pagbilin usa ka komento sa seksyon sa komento sa ubos.