Koyi Yadda Ake Amfani da Mabambantan Awk, Kalmomi Lambobi da Masu Aiwatar da Ayyuka - Sashe na 8
Jerin umarnin Awk yana samun farin ciki na yi imani, a cikin sassan bakwai da suka gabata, mun yi tafiya ta wasu mahimman abubuwan Awk waɗanda kuke buƙatar ƙwarewa don ba ku damar yin wasu mahimman rubutu ko tace kirtani a cikin Linux.
Farawa da wannan ɓangaren, za mu nutse zuwa wuraren gaba na Awk don ɗaukar ƙarin hadadden rubutu ko ayyukan tace kirtani. Saboda haka, za mu rufe fasali na Awk kamar masu canji, maganganun lambobi da masu aiki.
Waɗannan ra'ayoyin ba su bambanta da waɗanda ƙila ka ci karo da su a cikin yarukan shirye-shirye da yawa kafin irin wannan harsashi, C, Python da sauransu da yawa, don haka babu buƙatar damuwa da yawa game da wannan batu, kawai muna sake duba ra'ayoyin gama gari na amfani da su. wadannan siffofin da aka ambata.
Wataƙila wannan zai zama ɗayan mafi sauƙin sassan umarnin Awk don fahimta, don haka zauna baya bari mu tafi.
1. Awk Variables
A cikin kowane yare na shirye-shirye, variable shine wurin riƙe da ƙima, lokacin da ka ƙirƙiri maballin a cikin fayil ɗin shirin, yayin da fayil ɗin ke aiki, ana ƙirƙiri wani sarari a cikin ƙwaƙwalwar ajiya wanda zai adana ƙimar da ka ƙayyade don canjin.
Kuna iya ayyana masu canjin Awk kamar yadda kuka ayyana masu canjin harsashi kamar haka:
variable_name=value
A cikin rubutun da ke sama:
mai canzawa_name
: shine sunan da kuke ba da mdaraja
: ƙimar da aka adana a cikin m
Bari mu kalli wasu misalai a kasa:
computer_name=”linux-console.net” port_no=”22” email=”[email ” server=”computer_name”
Dubi sauƙaƙan misalan da ke sama, a cikin ma'anar mabambanta ta farko, an sanya darajar linux-console.net
zuwa madaidaicin sunan kwamfuta
.
Bugu da ƙari, an sanya ƙimar 22
zuwa madaidaicin port_no
, kuma yana yiwuwa a sanya ƙimar ɗaya zuwa wani mabambanta kamar yadda a cikin misali na ƙarshe inda muka sanya ƙimar. na sunan kwamfuta
zuwa uwar garken mai canzawa.
Idan za a iya tunawa, tun daga sashi na 2 na wannan jerin Awk da muka rufe filin gyara, mun yi magana game da yadda Awk ke raba layukan shigarwa zuwa filayen da kuma amfani da daidaitaccen ma'aikacin shiga filin, $
don karanta fagage daban-daban waɗanda an yi nazari. Hakanan zamu iya amfani da masu canji don adana ƙimar filayen kamar haka.
first_name=$2 second_name=$3
A cikin misalan da ke sama, an saita ƙimar first_name
zuwa fili na biyu kuma an saita name_second_code> zuwa fili na uku.
A matsayin misali, yi la'akari da fayil mai suna names.txt
wanda ya ƙunshi jerin masu amfani da aikace-aikacen da ke nuna sunayensu na farko da na ƙarshe da jinsi. Yin amfani da umarnin cat, za mu iya duba abubuwan da ke cikin fayil ɗin kamar haka:
$ cat names.txt
Sannan, za mu iya amfani da masu canji first_name
da name_second_name
don adana sunayen farko da na biyu na mai amfani na farko a cikin jerin kamar ta hanyar gudanar da umarnin Awk a ƙasa:
$ awk '/Aaron/{ first_name=$2 ; second_name=$3 ; print first_name, second_name ; }' names.txt
Bari mu kuma duba wani harka, lokacin da kuka ba da umarni uname -a
akan tashar ku, yana fitar da duk bayanan tsarin ku.
Filin na biyu ya ƙunshi hostname
, don haka za mu iya adana sunan mai masaukin a cikin wani mabambanta mai suna hostname
sannan mu buga shi ta amfani da Awk kamar haka:
$ uname -a $ uname -a | awk '{hostname=$2 ; print hostname ; }'
2. Kalmomin Lambobi
A cikin Awk, ana gina maganganun lambobi ta amfani da masu aiki na lamba masu zuwa:
*
: mai aiki da yawa+
: ƙarin afareta/
: mai aiki rabo-
: afaretan ragi%
: mai aiki da modul^
: afaretan fassarorin
Ma'anar kalmomin lambobi shine:
$ operand1 operator operand2
A cikin sigar da ke sama, operand1
da operand2
na iya zama lambobi ko sunaye masu canzawa, kuma operator
shine kowane daga cikin masu aiki a sama.
A ƙasa akwai wasu misalai don nuna yadda ake gina lambobi:
counter=0 num1=5 num2=10 num3=num2-num1 counter=counter+1
Don fahimtar amfani da lambobi a cikin Awk, za mu yi la'akari da misalin da ke ƙasa, tare da fayil domains.txt
wanda ya ƙunshi duk yanki mallakar Tecmint.
news.linux-console.net linux-console.net linuxsay.com windows.linux-console.net linux-console.net news.linux-console.net linux-console.net linuxsay.com linux-console.net news.linux-console.net linux-console.net linuxsay.com windows.linux-console.net linux-console.net
Don duba abubuwan da ke cikin fayil ɗin, yi amfani da umarnin da ke ƙasa:
$ cat domains.txt
Idan muna son ƙidaya adadin lokutan yankin linux-console.net
ya bayyana a cikin fayil ɗin, za mu iya rubuta rubutu mai sauƙi don yin haka kamar haka:
#!/bin/bash for file in [email ; do if [ -f $file ] ; then #print out filename echo "File is: $file" #print a number incrementally for every line containing linux-console.net awk '/^linux-console.net/ { counter=counter+1 ; printf "%s\n", counter ; }' $file else #print error info incase input is not a file echo "$file is not a file, please specify a file." >&2 && exit 1 fi done #terminate script with exit code 0 in case of successful execution exit 0
Bayan ƙirƙirar rubutun, adana shi kuma sanya shi mai aiwatarwa, lokacin da muke gudanar da shi tare da fayil ɗin, domains.txt
azaman shigarwar, muna samun fitarwa mai zuwa:
$ ./script.sh ~/domains.txt
Daga fitowar rubutun, akwai layi 6 a cikin fayil ɗin domains.txt
wanda ya ƙunshi linux-console.net
, don tabbatar da cewa zaku iya ƙirga su da hannu.
3. Ma'aikatan Assignment
Siffar Awk ta ƙarshe da za mu rufe ita ce masu gudanar da ayyuka, akwai masu gudanar da ayyuka da yawa a Awk kuma waɗannan sun haɗa da masu zuwa:
*=
: mai aiki da aikin ninkawa+=
: Ƙarin aikin aiki/=
: mai aikin rarrabawa-=
: afaretan aikin ragi%=
: ma'aikacin aiki na modulus^=
: ma'aikacin aikin fassara
Mafi sauƙaƙan tsarin aikin ɗawainiya a Awk shine kamar haka:
$ variable_name=variable_name operator operand
Misalai:
counter=0 counter=counter+1 num=20 num=num-1
Kuna iya amfani da ma'aikatan da ke sama don rage ayyukan aiki a Awk, la'akari da misalan da suka gabata, za mu iya yin aikin a cikin tsari mai zuwa:
variable_name operator=operand
counter=0 counter+=1 num=20 num-=1
Don haka, za mu iya canza umarnin Awk a cikin rubutun harsashi da muka rubuta a sama ta amfani da +=
mai aiki kamar haka:
#!/bin/bash for file in [email ; do if [ -f $file ] ; then #print out filename echo "File is: $file" #print a number incrementally for every line containing linux-console.net awk '/^linux-console.net/ { counter+=1 ; printf "%s\n", counter ; }' $file else #print error info incase input is not a file echo "$file is not a file, please specify a file." >&2 && exit 1 fi done #terminate script with exit code 0 in case of successful execution exit 0
A cikin wannan sashe na jerin Awk, mun rufe wasu fasaloli masu ƙarfi na Awk, wato masu canji, gina lambobi da amfani da masu aiki, da wasu ƴan misalai na yadda za mu iya amfani da su a zahiri.
Waɗannan ra'ayoyin ba su bambanta da ɗaya a cikin wasu yarukan shirye-shirye ba amma ana iya samun bambance-bambance masu mahimmanci a ƙarƙashin shirin Awk.
A kashi na 9, za mu kalli ƙarin fasalulluka na Awk waɗanda ke da tsari na musamman: BEGIN
da END
. Har sai lokacin, ci gaba da haɗi zuwa Tecment.