h1

awk – noch sone Scriptsprache?

September 27, 2008

Auf Wunsch von Charly schreibe ich also einen kleinen Artikel zu awk =)

Awk ist eine unübersichtliche, aber durchaus mächtige Scriptsprache. Zurzeit habe ich angefangen ein awk-Tutorial zu lesen, welches folgende Anwendungsgebiete für awk nennt:

  • Tallying information from text files and creating reports from the results.
  • Adding additional functions to text editors like „vi“.
  • Translating files from one format to another.
  • Creating small databases.
  • Performing mathematical operations on files of numeric data.

Awk-Scripte haben zwei mögliche Aufrufe, einmal kann man dem Interpreter eine Textdatei übergeben oder aber man schließt awk direkt in eine Pipe ein. Awk arbeitet dann den Text zeilenweise nach dem Muster, dass vom awk-script definiert ist ab und gibt das Resultat über die Standardausgabe aus.

Ein awk-Programm ist immer nach folgendem Muster aufgebaut (auch dem tutorial entnommen):

awk ‚BEGIN {<initializations>}
<search pattern 1> {<program actions>}
<search pattern 2> {<program actions>}

END {<final actions>}‘

In die Zeile BEGIN kann man Variablen initialisieren oder ähnliches, man kann sie aber auch komplett weglassen. Dann folgen Zeilen, die jeweils mit einem Suchmuster beginnen. Das Suchmuster ist ein regulärer Ausdruck und wird auf jede Zeile angewendet. Trifft das Suchmuster auf eine Zeile zu, so werden die dahinter stehenden Befehle ausgeführt. Zu guter Letzt folgt eine Zeile END, die Befehle ausführt, nachdem alle Zeilen abgearbeitet worden sind.

Will man von einer Datei mit mehreren durch leerzeichen getrennten Spalten sich nur eine bestimmt ausgeben lassen, so tippt man:

awk ‚{print $1}‘ dateiname

um sich die erste Spalte jeder Zeile ausgeben zu lassen.

Will man nur die erste Spalte von Zeilen lesen, die nicht mit einem # beginnen so tippt man:

awk ‚/^[^#]/ {print $1}‘ dateiname

Ich finde awk irgendwie interessant, auch wenn ich dafür im Moment keine wirklichen Gründe nennen kann, weil ich die Sprache noch viel zu wenig kenne, aber selbst wenn man sie nicht interessant und gut findet – awk gehört einfach zum Linux-Allgemeinwissen und ist Pflicht für jeden Linux-Geek =)

Wer jetzt Interesse hat oder seiner ‚Pflicht‘ als Linux-Geek nachkommen will, sollte sich einfach mal das Tutorial anschauen.

3 Kommentare

  1. Dankedanke für die Mühe – klingt schon irgendwie interessant- nur fehlen mir ein paar konkrete Anwendungsbeispiele, ansonsten wüsste ich auch nicht wofür ich das genau benutzen sollte.


  2. Nja n genaues Beispiel kann ich dir im Moment net geben, könnte höchstens im tutorial suchen^^
    Also es lohnt sich überall, wo du Textdateien nach bestimmten Informationen durchsuchen willst oder ähnliches…
    Hmm sogut wie jedesmal wenn Daten strukturiert in einer Textdatei gespeichert werden, lohnt sich awk würde ich behaupten.
    Interessant finde ich auch den Punkt:
    Adding additional functions to text editors like “vi”.
    Du kannst dir ja auf eine Taste eine Funktion legen, die den aktuellen Inhalt deiner Vim-Session an awk übergibt, welches diesen dann irgendwie bearbeitet… Nur fehlt jetzt hier wieder das Beispiel^^
    Nja irgendwann werde ich schon auf ein Problem treffen, dass man gut mit awk lösen kann.


  3. […] awk, Dateien, Emailadressen, filtern, reguläre Ausdrücke, WWW | by Thomas Letztens bei einem Artikel über awk, wollte Charly ein Beispiel sehen. Jetzt habe ich eins. awk lässt sich herrvoragend dazu nutzen, […]



Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: