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:

  1. mai canzawa_name: shine sunan da kuke ba da m
  2. daraja: ƙ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:

  1. * : mai aiki da yawa
  2. + : ƙarin afareta
  3. / : mai aiki rabo
  4. - : afaretan ragi
  5. % : mai aiki da modul
  6. ^ : 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:

  1. *= : mai aiki da aikin ninkawa
  2. += : Ƙarin aikin aiki
  3. /= : mai aikin rarrabawa
  4. -= : afaretan aikin ragi
  5. %= : ma'aikacin aiki na modulus
  6. ^= : 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.