Hvordan skrive skript med Awk-programmeringsspråk - del 13


Hele tiden fra begynnelsen av Awk-serien til del 12 har vi skrevet små Awk-kommandoer og programmer på henholdsvis kommandolinjen og i shell-skript.

Imidlertid er Awk, akkurat som Shell, også et tolket språk, derfor, med alt vi har gått gjennom fra starten av denne serien, kan du nå skrive kjørbare Awk-skript.

I likhet med hvordan vi skriver et skallskript, starter Awk-skript med linjen:

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

For eksempel på systemet mitt er Awk-verktøyet plassert i /usr/bin/awk, derfor vil jeg starte et Awk-skript som følger:

#! /usr/bin/awk -f 

Forklar linjen ovenfor:

  1. #! – referert til som Shebang, som spesifiserer en tolk for instruksjonene i et skript
  2. /usr/bin/awk – er tolken
  3. -f – tolkeralternativ, brukes til å lese en programfil

Når det er sagt, la oss nå dykke ned i å se på noen eksempler på Awk kjørbare skript, vi kan starte med det enkle skriptet nedenfor. Bruk favorittredigeringsprogrammet for å åpne en ny fil som følger:

vi script.awk

Og lim inn koden nedenfor i filen:

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

Lagre filen og avslutt, og gjør deretter skriptet kjørbart ved å gi kommandoen nedenfor:

chmod +x script.awk

Kjør den deretter:

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

En kritisk programmerer der ute må spørre «hvor er kommentarene?», ja, du kan også inkludere kommentarer i Awk-skriptet ditt. Å skrive kommentarer i koden din er alltid en god programmeringspraksis.

Det hjelper andre programmerere som ser gjennom koden din for å forstå hva du prøver å oppnå i hver del av et skript eller programfil.

Derfor kan du inkludere kommentarer i skriptet ovenfor som følger.

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

Deretter skal vi se på et eksempel hvor vi leser inndata fra en fil. Vi ønsker å søke etter en systembruker som heter aaronkilik i kontofilen, /etc/passwd, og deretter skrive ut brukernavnet, brukerens ID og brukeren GID som følger:

Nedenfor er innholdet i skriptet vårt kalt 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 }

Lagre filen og avslutt, gjør skriptet kjørbart og kjør det som nedenfor:

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

I det siste eksemplet nedenfor skal vi bruke do while-setningen for å skrive ut tall fra 0-10:

Nedenfor er innholdet i skriptet vårt kalt 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)
}

Etter å ha lagret filen, gjør skriptet kjørbart som vi har gjort før. Kjør den etterpå:

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

Sammendrag

Vi har kommet til slutten av denne interessante Awk-serien, jeg håper du har lært mye av alle de 13 delene, som en introduksjon til Awk-programmeringsspråket.

Som jeg nevnte fra begynnelsen, er Awk et komplett tekstbehandlingsspråk, av den grunn kan du lære flere andre aspekter av Awk programmeringsspråk som miljøvariabler, matriser, funksjoner (innebygd og brukerdefinert) og mer.

Det er enda flere deler av Awk-programmering å lære og mestre, så nedenfor har jeg gitt noen lenker til viktige nettressurser som du kan bruke til å utvide Awk-programmeringsferdighetene dine, disse er ikke nødvendigvis alt du trenger, du kan også se ut etter nyttige Awk-programmeringsbøker.

Referanselenker: GNU Awk-brukerveiledningen og AWK-språkprogrammering

For eventuelle tanker du ønsker å dele eller spørsmål, bruk kommentarskjemaet nedenfor. Husk å alltid være koblet til Tecmint for flere spennende serier.