Yadda Ake Amfani da Awk don Tace Rubutu ko Zaɓuɓɓuka Ta Amfani da takamaiman Ayyuka


A kashi na uku na jerin umarni na Awk, za mu kalli tace rubutu ko kirtani bisa takamaiman tsari wanda mai amfani zai iya ayyana.

Wani lokaci, lokacin tace rubutu, kana so ka nuna wasu layika daga fayil ɗin shigarwa ko layukan kirtani dangane da yanayin da aka bayar ko ta amfani da takamaiman tsari wanda za'a iya daidaitawa. Yin wannan tare da Awk yana da sauqi sosai, yana ɗaya daga cikin manyan abubuwan Awk waɗanda za ku sami taimako.

Bari mu kalli wani misali a ƙasa, a ce kuna da jerin siyayya na kayan abinci waɗanda kuke son siya, mai suna food_prices.list. Yana da jerin abubuwan abinci masu zuwa da farashin su.

$ cat food_prices.list 
No	Item_Name		Quantity	Price
1	Mangoes			   10		$2.45
2	Apples			   20		$1.50
3	Bananas			   5		$0.90
4	Pineapples		   10		$3.46
5	Oranges			   10		$0.78
6	Tomatoes		   5		$0.55
7	Onions			   5            $0.45

Sannan, kuna son nuna alamar (*) akan kayan abinci waɗanda farashinsu ya fi $2, ana iya yin hakan ta hanyar aiwatar da umarni mai zuwa:

$ awk '/ *$[2-9]\.[0-9][0-9] */ { print $1, $2, $3, $4, "*" ; } / *$[0-1]\.[0-9][0-9] */ { print ; }' food_prices.list

Daga abin da aka fitar a sama, zaku iya ganin cewa akwai alamar (*) a ƙarshen layin da ke ɗauke da kayan abinci, mangwaro da abarba. Idan ka duba farashinsu, sun haura $2.

A cikin wannan misali, mun yi amfani da nau'i biyu:

  1. na farko: / *\$[2-9]\.[0-9][0-9] */ yana samun layin da ke da farashin kayan abinci sama da $2 da ku >
  2. na biyu: /*\$[0-1]\.[0-9][0-9] */ yana neman layin da farashin kayan abinci bai wuce $2 ba.

Wannan shi ne abin da ya faru, akwai filayen guda huɗu a cikin fayil ɗin, lokacin da tsarin mutum ya ci karo da layi tare da farashin kayan abinci sama da $2, yana buga dukkan filayen guda huɗu da alamar (*) a ƙarshen layin a matsayin tuta.

Tsarin na biyu kawai yana buga sauran layin tare da farashin abinci ƙasa da $2 kamar yadda suke bayyana a cikin fayil ɗin shigarwa, food_prices.list.

Ta wannan hanyar zaku iya amfani da takamaiman ayyuka don tace kayan abinci waɗanda aka farashi sama da $2, kodayake akwai matsala tare da fitarwa, layin da ke da alamar (*) ba a tsara su kamar sauran layukan da ke haifar da fitarwa bai isa ba.

Mun ga matsala iri ɗaya a cikin kashi na 2 na jerin awk, amma za mu iya magance ta ta hanyoyi biyu:

1. Yin amfani da umarnin printf wanda hanya ce mai tsawo da ban gajiya ta amfani da umarnin da ke ƙasa:

$ awk '/ *$[2-9]\.[0-9][0-9] */ { printf "%-10s %-10s %-10s %-10s\n", $1, $2, $3, $4 "*" ; } / *$[0-1]\.[0-9][0-9] */ { printf "%-10s %-10s %-10s %-10s\n", $1, $2, $3, $4; }' food_prices.list 

2. Amfani da filin $0. Awk yana amfani da m 0 don adana duk layin shigarwa. Wannan yana da amfani don magance matsalar da ke sama kuma yana da sauƙi da sauri kamar haka:

$ awk '/ *$[2-9]\.[0-9][0-9] */ { print $0 "*" ; } / *$[0-1]\.[0-9][0-9] */ { print ; }' food_prices.list 

Kammalawa

Shi ke nan a yanzu kuma waɗannan hanyoyi ne masu sauƙi na tace rubutu ta amfani da ƙayyadaddun ƙayyadaddun tsari wanda zai iya taimakawa wajen sanya layin rubutu ko kirtani a cikin fayil ta amfani da umarnin Awk.

Da fatan za ku sami wannan labarin yana da taimako kuma ku tuna don karanta sashe na gaba na jerin wanda zai mayar da hankali kan yin amfani da ma'aikatan kwatanta ta amfani da kayan aikin awk.