Weboldal keresés

Szkriptek írása Awk programozási nyelv használatával – 13. rész


Az Awk sorozat kezdetétől egészen a 12. részig kis Awk parancsokat és programokat írtunk a parancssorban, illetve shell szkriptekben.

Azonban az Awk, akárcsak a Shell, szintén egy értelmezett nyelv, ezért a sorozat elejétől kezdve végigmentünk mindennel, most már írhat Awk futtatható szkripteket.

Hasonlóan ahhoz, ahogyan egy shell szkriptet írunk, az Awk szkriptek a következő sorral kezdődnek:

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

Például az én rendszeremen az Awk segédprogram az /usr/bin/awk mappában található, ezért az Awk-szkriptet a következőképpen indítanám el:

#! /usr/bin/awk -f 

A fenti sor magyarázata:

  1. #! – a továbbiakban: Shebang, amely értelmezőt határoz meg a szkriptben lévő utasításokhoz
  2. /usr/bin/awk – az értelmező
  3. -f – értelmező opció, programfájl olvasására szolgál

Ennek ellenére vessünk egy pillantást az Awk végrehajtható szkriptekre, és kezdhetjük az alábbi egyszerű szkripttel. Használja kedvenc szerkesztőjét egy új fájl megnyitásához az alábbiak szerint:

vi script.awk

Illessze be az alábbi kódot a fájlba:

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

Mentse el a fájlt és lépjen ki, majd tegye végrehajthatóvá a szkriptet az alábbi parancs kiadásával:

chmod +x script.awk

Ezután futtassa:

./script.awk
Minta kimenet
Writing my first Awk executable script!

Egy kritikus programozó biztosan azt kérdezi: „hol vannak a megjegyzések?”, igen, az Awk-szkriptbe is belefoglalhat megjegyzéseket. A megjegyzések írása a kódba mindig jó programozási gyakorlat.

Segít más programozóknak, akik átnézik a kódot, hogy megértsék, mit akar elérni a szkript vagy programfájl egyes szakaszaiban.

Ezért megjegyzéseket fűzhet a fenti szkripthez az alábbiak szerint.

#!/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!" }

Ezután nézzünk meg egy példát, ahol egy fájlból olvassuk be a bemenetet. Meg akarunk keresni egy aaronkilik nevű rendszerfelhasználót a fiókfájlban (/etc/passwd), majd kinyomtatjuk a felhasználónevet, a felhasználó azonosítóját és a felhasználót. GID az alábbiak szerint:

Alább látható a second.awk nevű szkriptünk tartalma.

#! /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 }

Mentse el a fájlt és lépjen ki, tegye végrehajthatóvá a szkriptet, és hajtsa végre az alábbiak szerint:

chmod +x second.awk
./second.awk /etc/passwd
Minta kimenet
Username : aaronkilik User ID : 1000 User GID : 1000

Az alábbi utolsó példában a do while utasítást használjuk a 0-10 közötti számok kinyomtatására:

Alább látható a do.awk nevű szkriptünk tartalma.

#! /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)
}

A fájl mentése után tegyük futtathatóvá a szkriptet, ahogy korábban tettük. Ezután futtassa:

chmod +x do.awk
./do.awk
Minta kimenet
0
1
2
3
4
5
6
7
8
9
10

Összegzés

Elérkeztünk ennek az érdekes Awk sorozatnak a végéhez, remélem, sokat tanultál mind a 13 részből, az Awk programozási nyelv bevezetéseként.

Amint már az elején említettem, az Awk egy teljes szövegfeldolgozó nyelv, ezért az Awk programozási nyelv további aspektusait is megismerheti, például környezeti változókat, tömböket, függvényeket (beépített és felhasználó által definiált) és azon túl.

Az Awk programozásnak még további részei vannak, amelyeket meg kell tanulni és elsajátítani, ezért az alábbiakban néhány linket mutatok be fontos online forrásokhoz, amelyek segítségével bővítheti Awk programozási készségeit. Nem feltétlenül ezekre van szükséged, hanem meg is nézheted. hasznos awk programozási könyvekért.

Referencia hivatkozások: A GNU Awk felhasználói kézikönyv és az AWK nyelvi programozás

A megosztani kívánt gondolatok vagy kérdések esetén használja az alábbi megjegyzés űrlapot. Ne feledje, hogy mindig kapcsolatban maradjon a Tecminttel az izgalmasabb sorozatokért.