Bii o ṣe le Lo Aṣẹ atẹle pẹlu Awk ni Lainos - Apá 6


Ninu apakan kẹfa ti Awk jara, a yoo wo ni lilo atẹle pipaṣẹ, eyiti o sọ fun Awk lati foju gbogbo awọn ilana ati awọn ọrọ ti o ku ti o ti pese, ṣugbọn dipo ka laini titẹ sii ti nbọ.

Aṣẹ atẹle ṣe iranlọwọ fun ọ lati yago fun ṣiṣe ohun ti Emi yoo tọka si bi awọn igbesẹ asiko-akoko ni pipaṣẹ pipaṣẹ kan.

Lati ni oye bi o ṣe n ṣiṣẹ, jẹ ki a gbero faili kan ti a pe ni food_list.txt ti o dabi eleyi:

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

Ṣe akiyesi ṣiṣe pipaṣẹ atẹle ti yoo ṣe ifihan awọn ohun ounjẹ ti iye wọn kere ju tabi dọgba pẹlu 20 pẹlu ami (*) ni opin ila kọọkan:

# 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

Ofin ti o wa loke n ṣiṣẹ bi atẹle:

  1. Ni akọkọ, o ṣayẹwo boya opoiye, aaye kẹrin ti ila titẹ sii kọọkan kere tabi dọgba pẹlu 20, ti iye kan ba ba ipo yẹn mu, o tẹjade ati ṣe ifihan pẹlu ami (*) ni ipari nipa lilo ikosile ọkan: $4 <= 20
  2. Ẹlẹẹkeji, o ṣayẹwo boya aaye kẹrin ti laini titẹ sii kọọkan tobi ju 20 lọ, ati pe ti ila kan ba pade ipo ti o tẹjade ni lilo ikosile meji: $4> 20

Ṣugbọn iṣoro kan wa nibi, nigbati iṣafihan akọkọ ba ṣiṣẹ, laini ti a fẹ ṣe asia ni a tẹjade ni lilo: {printf\"% s% s \ ", $0, \" **\";} ati lẹhinna ni igbesẹ kanna, a tun ṣayẹwo ikosile keji eyiti o di ifosiwewe akoko asiko.

Nitorinaa ko si iwulo lati ṣiṣẹ ikosile keji, $4> 20 lẹẹkansii lẹhin titẹ awọn ila ti a ti ta tẹlẹ ti a ti tẹ ni lilo ikosile akọkọ.

Lati baju iṣoro yii, o ni lati lo atẹle aṣẹ bi atẹle:

# 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

Lẹhin ti a tẹ ila laini titẹ sii kan ni lilo $4 <= 20 {printf\"% s% s \ ", $0, \" *\"; atẹle;} , atẹle pipaṣẹ ti o wa pẹlu yoo ṣe iranlọwọ foju foju ikosile keji $4> 20 { tẹjade $0;} , nitorinaa ipaniyan n lọ si laini titẹ sii ti nbọ laisi nini akoko asiko lori ṣayẹwo boya iye wọn tobi ju 20 lọ.

Atẹle ti o tẹle jẹ pataki pupọ ni kikọ awọn ofin ṣiṣe daradara ati nibiti o ba jẹ dandan, o le lo nigbagbogbo lati yara iyara ipaniyan ti iwe afọwọkọ kan. Mura fun apakan ti atẹle ti jara nibiti a o wo ni lilo titẹsi boṣewa (STDIN) bi kikọ sii fun Awk.

Ṣe ireti pe o wa eyi bi o ṣe le ṣe iranlọwọ fun iranlọwọ ati pe o le fi awọn ero rẹ sinu kikọ nigbagbogbo nipa fifi ọrọ silẹ ni abala ọrọ ni isalẹ.