Zoeken op website

Scripts schrijven met de programmeertaal Awk - Deel 13


Vanaf het begin van de Awk-serie tot en met deel 12 hebben we kleine Awk-opdrachten en -programma's geschreven op respectievelijk de opdrachtregel en in shell-scripts.

Awk is echter, net als Shell, ook een geïnterpreteerde taal. Daarom kun je, met alles wat we vanaf het begin van deze serie hebben doorgenomen, nu uitvoerbare Awk-scripts schrijven.

Net zoals we een shellscript schrijven, beginnen Awk-scripts met de regel:

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

Op mijn systeem bevindt het hulpprogramma Awk zich bijvoorbeeld in /usr/bin/awk. Daarom zou ik een Awk-script als volgt starten:

#! /usr/bin/awk -f 

Uitleg van de bovenstaande regel:

  1. #! – ook wel Shebang genoemd, wat een tolk specificeert voor de instructies in een script
  2. /usr/bin/awk – is de tolk
  3. -f – tolkoptie, gebruikt om een programmabestand te lezen

Dat gezegd hebbende, laten we nu eens kijken naar enkele voorbeelden van uitvoerbare Awk-scripts. We kunnen beginnen met het eenvoudige script hieronder. Gebruik uw favoriete editor om als volgt een nieuw bestand te openen:

vi script.awk

En plak onderstaande code in het bestand:

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

Sla het bestand op, sluit het af en maak het script vervolgens uitvoerbaar door de onderstaande opdracht uit te voeren:

chmod +x script.awk

Voer het daarna uit:

./script.awk
Voorbeelduitvoer
Writing my first Awk executable script!

Een kritische programmeur zal zich waarschijnlijk afvragen: “waar zijn de commentaren?”, ja, je kunt ook commentaar opnemen in je Awk-script. Het schrijven van commentaar in uw code is altijd een goede programmeerpraktijk.

Het helpt andere programmeurs om door uw code te kijken om te begrijpen wat u probeert te bereiken in elke sectie van een script of programmabestand.

Daarom kunt u als volgt opmerkingen in het bovenstaande script opnemen.

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

Vervolgens zullen we een voorbeeld bekijken waarin we invoer uit een bestand lezen. We willen zoeken naar een systeemgebruiker met de naam aaronkilik in het accountbestand, /etc/passwd, en vervolgens de gebruikersnaam, gebruiker ID en gebruiker afdrukken GID als volgt:

Hieronder vindt u de inhoud van ons script genaamd second.awk.

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

Sla het bestand op en sluit af, maak het script uitvoerbaar en voer het uit zoals hieronder:

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

In het laatste voorbeeld hieronder gebruiken we de do while-instructie om getallen van 0-10 af te drukken:

Hieronder vindt u de inhoud van ons script genaamd do.awk.

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

Nadat u het bestand hebt opgeslagen, maakt u het script uitvoerbaar zoals we eerder hebben gedaan. Voer het daarna uit:

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

Samenvatting

We zijn aan het einde gekomen van deze interessante Awk-serie, ik hoop dat je veel hebt geleerd van alle 13 delen, als introductie tot de programmeertaal Awk.

Zoals ik vanaf het begin al zei, is Awk een complete tekstverwerkingstaal. Om die reden kun je meer andere aspecten van de Awk-programmeertaal leren, zoals omgevingsvariabelen, arrays, functies (ingebouwd en door de gebruiker gedefinieerd) en meer.

Er zijn nog extra onderdelen van Awk-programmeren die je moet leren en beheersen, dus hieronder heb ik enkele links gegeven naar belangrijke online bronnen die je kunt gebruiken om je Awk-programmeervaardigheden uit te breiden. Dit zijn niet noodzakelijkerwijs alles wat je nodig hebt, je kunt ook kijken op zoek naar nuttige Awk-programmeerboeken.

Referentielinks: de GNU Awk-gebruikershandleiding en AWK-taalprogrammering

Gebruik het onderstaande reactieformulier voor alle gedachten die u wilt delen of vragen. Vergeet niet om altijd verbonden te blijven met Tecmint voor spannendere series.