Seit Beginn der Awk-Serie bis Teil 12 haben wir kleine Awk-Befehle und -Programme auf der Kommandozeile bzw. in Shell-Skripten geschrieben.
Allerdings ist Awk, genau wie die Shell, auch eine interpretierte Sprache, so dass Sie mit all dem, was wir seit Beginn dieser Serie durchgegangen sind, nun auch Awk-ausführbare Skripte schreiben können.
Ähnlich, wie wir ein Shell-Skript schreiben, beginnen Awk-Skripte mit der Zeile:
#! /path/to/awk/utility -f
Beispielsweise befindet sich auf meinem System das Awk-Dienstprogramm in /usr/bin/awk, daher würde ich ein Awk-Skript wie folgt starten:
#! /usr/bin/awk -f
Die obige Zeile erklärt:
-
#!
– wird als Shebang bezeichnet, das einen Interpreter für die Anweisungen in einem Skript angibt -
/usr/bin/awk
– ist der Interpreter -
-f
– Interpreteroption, wird verwendet, um eine Programmdatei zu lesen
Damit wollen wir uns nun ein paar Beispiele für ausführbare Awk-Skripte ansehen, wir können mit dem einfachen Skript unten beginnen. Verwenden Sie Ihren Lieblingseditor, um eine neue Datei wie folgt zu öffnen:
$ vi script.awk
Und fügen Sie den unten stehenden Code in die Datei ein:
#!/usr/bin/awk -f BEGIN { printf "%s\n","Writing my first Awk executable script!" }
Speichern Sie die Datei und beenden Sie sie, dann machen Sie das Skript ausführbar, indem Sie den folgenden Befehl eingeben:
$ chmod +x script.awk
Danach führen Sie es aus:
$ ./script.awk
Beispiel-Ausgabe
Writing my first Awk executable script!
Ein kritischer Programmierer da draußen fragt sich bestimmt, „wo sind die Kommentare?“, ja, Sie können auch Kommentare in Ihr Awk-Skript einfügen. Das Schreiben von Kommentaren in Ihrem Code ist immer eine gute Programmierpraxis.
Es hilft anderen Programmierern, die Ihren Code durchsehen, zu verstehen, was Sie in jedem Abschnitt eines Skripts oder einer Programmdatei zu erreichen versuchen.
Daher können Sie Kommentare in das obige Skript wie folgt einfügen.
#!/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!" }
Als Nächstes wollen wir uns ein Beispiel ansehen, bei dem wir eine Eingabe aus einer Datei lesen. Wir wollen in der Kontendatei /etc/passwd nach einem Systembenutzer namens aaronkilik suchen und dann den Benutzernamen, die Benutzer-ID und die Benutzer-GID wie folgt ausgeben:
Nachfolgend sehen Sie den Inhalt unseres Skripts namens second.awk.
#! /usr/bin/awk -f #use BEGIN sepecial character to set FS built-in variableBEGIN { FS=":" }#search for username: aaronkilik and print account details /aaronkilik/ { print "Username :",$1,"User ID :",$3,"User GID :",$4 }
Speichern Sie die Datei und beenden Sie sie, machen Sie das Skript ausführbar und führen Sie es wie folgt aus:
$ chmod +x second.awk$ ./second.awk /etc/passwd
Beispielausgabe
Username : aaronkilik User ID : 1000 User GID : 1000
Im letzten Beispiel unten werden wir die Anweisung do while verwenden, um Zahlen von 0-10 auszudrucken:
Nachfolgend ist der Inhalt unseres Skripts namens do.awk.
#! /usr/bin/awk -f #printing from 0-10 using a do while statement #do while statement BEGIN {#initialize a counterx=0do { print x; x+=1;}while(x<=10)}
Nach dem Speichern der Datei machen Sie das Skript ausführbar, wie wir es zuvor getan haben. Führen Sie es anschließend aus:
$ chmod +x do.awk$ ./do.awk
Beispielausgabe
012345678910
Zusammenfassung
Wir sind am Ende dieser interessanten Awk-Serie angelangt, ich hoffe, Sie haben aus allen 13 Teilen viel gelernt, als Einführung in die Programmiersprache Awk.
Wie ich schon am Anfang erwähnt habe, ist Awk eine komplette Textverarbeitungssprache, deshalb können Sie noch weitere Aspekte der Awk-Programmiersprache kennenlernen, wie Umgebungsvariablen, Arrays, Funktionen (eingebaute & benutzerdefiniert) und darüber hinaus.
Es gibt noch weitere Teile der Awk-Programmierung zu lernen und zu beherrschen, daher habe ich unten einige Links zu wichtigen Online-Ressourcen angegeben, die Sie verwenden können, um Ihre Awk-Programmierkenntnisse zu erweitern, diese sind nicht unbedingt alles, was Sie brauchen, Sie können auch nach nützlichen Awk-Programmierbüchern Ausschau halten.