Kaip rašyti scenarijus naudojant „Awk“ programavimo kalbą – 13 dalis


Nuo Awk serijos pradžios iki 12 dalies mes rašėme mažas Awk komandas ir programas atitinkamai komandinėje eilutėje ir apvalkalo scenarijuose.

Tačiau Awk, kaip ir „Shell“, taip pat yra interpretuojama kalba, todėl dabar galite rašyti „Awk“ vykdomuosius scenarijus.

Panašiai kaip rašome apvalkalo scenarijų, Awk scenarijai prasideda tokia eilute:

#! /path/to/awk/utility -f 

Pavyzdžiui, mano sistemoje Awk paslaugų programa yra /usr/bin/awk, todėl Awk scenarijų pradėčiau taip:

#! /usr/bin/awk -f 

Aukščiau pateiktos eilutės paaiškinimas:

  1. #! – vadinamas Shebang, kuris nurodo scenarijaus instrukcijų vertėją
  2. /usr/bin/awk – yra vertėjas
  3. -f – vertėjo parinktis, naudojama nuskaityti programos failą

Be to, dabar pasinerkime į kai kuriuos Awk vykdomųjų scenarijų pavyzdžius, galime pradėti nuo paprasto scenarijaus, esančio žemiau. Norėdami atidaryti naują failą, naudokite savo mėgstamą redaktorių taip:

vi script.awk

Ir įklijuokite žemiau esantį kodą į failą:

#!/usr/bin/awk -f 
BEGIN { printf "%s\n","Writing my first Awk executable script!" }

Išsaugokite failą ir išeikite, tada padarykite scenarijų vykdytiną išleisdami toliau pateiktą komandą:

chmod +x script.awk

Po to paleiskite jį:

./script.awk
Pavyzdžio išvestis
Writing my first Awk executable script!

Kritiškas programuotojas tikriausiai klausia: „kur yra komentarai?“, taip, taip pat galite įtraukti komentarus į savo „Awk“ scenarijų. Komentarų rašymas į savo kodą visada yra gera programavimo praktika.

Tai padeda kitiems programuotojams, peržiūrintiems jūsų kodą, suprasti, ką jūs bandote pasiekti kiekvienoje scenarijaus ar programos failo dalyje.

Todėl į aukščiau pateiktą scenarijų galite įtraukti komentarus taip.

#!/usr/bin/awk -f 

#This is how to write a comment in Awk
#using the BEGIN special pattern to print a sentence 

BEGIN { printf "%s\n","Writing my first Awk executable script!" }

Toliau pažvelgsime į pavyzdį, kai skaitome įvestį iš failo. Norime paskyros faile /etc/passwd ieškoti sistemos naudotojo, vardu aaronkilik, tada atspausdinti naudotojo vardą, naudotojo ID ir naudotoją GID taip:

Toliau pateikiamas mūsų scenarijaus, pavadinto second.awk, turinys.

#! /usr/bin/awk -f 

#use BEGIN sepecial character to set FS built-in variable
BEGIN { FS=":" }

#search for username: aaronkilik and print account details 
/aaronkilik/ { print "Username :",$1,"User ID :",$3,"User GID :",$4 }

Išsaugokite failą ir išeikite, padarykite scenarijų vykdomąjį ir paleiskite jį taip, kaip nurodyta toliau:

chmod +x second.awk
./second.awk /etc/passwd
Pavyzdžio išvestis
Username : aaronkilik User ID : 1000 User GID : 1000

Paskutiniame toliau pateiktame pavyzdyje naudosime do while teiginį, kad išspausdintume skaičius nuo 0 iki 10:

Toliau pateikiamas mūsų scenarijaus, pavadinto do.awk, turinys.

#! /usr/bin/awk -f 

#printing from 0-10 using a do while statement 
#do while statement 
BEGIN {
#initialize a counter
x=0

do {
    print x;
    x+=1;
}
while(x<=10)
}

Išsaugoję failą, padarykite scenarijų vykdomąjį, kaip darėme anksčiau. Po to paleiskite jį:

chmod +x do.awk
./do.awk
Pavyzdžio išvestis
0
1
2
3
4
5
6
7
8
9
10

Santrauka

Priėjome šios įdomios Awk serijos pabaigą. Tikiuosi, kad jūs daug išmokote iš visų 13 dalių, kaip įvadą į Awk programavimo kalbą.

Kaip minėjau nuo pat pradžių, „Awk“ yra visapusiška teksto apdorojimo kalba, todėl galite sužinoti daugiau kitų „Awk“ programavimo kalbos aspektų, tokių kaip aplinkos kintamieji, matricos, funkcijos (įtaisytos ir apibrėžtos vartotojo) ir ne tik.

Dar yra papildomų Awk programavimo dalių, kurias reikia išmokti ir įsisavinti, todėl toliau pateikiau keletą nuorodų į svarbius internetinius išteklius, kuriuos galite naudoti norėdami išplėsti savo Awk programavimo įgūdžius. Tai nebūtinai yra viskas, ko jums reikia. ieškokite naudingų „Awk“ programavimo knygų.

Nuorodų nuorodos: GNU Awk vartotojo vadovas ir AWK kalbos programavimas

Jei norite pasidalyti mintimis ar turite klausimų, naudokite toliau pateiktą komentarų formą. Nepamirškite visada palaikyti ryšį su Tecmint, kad gautumėte įdomesnių serialų.