awk

Aus wiki.archlinux.de

„Awk“ wurde von Knoppi (Diskussion) als in Bearbeitung markiert. Um Bearbeitungskonflikte zu vermeiden, kontaktiere Knoppi (Diskussion) bitte, bevor du den Artikel bearbeitest.


awk ist eine Programmiersprache, bzw. Programm, zur Dateibearbeitung, Analyse und Auswertung von Texten auf der Grundlage von Mustererkennung, regular expressions (regex). Es bearbeitet hauptsächlich Zeichenketten, Strings. Der Name ist aus den Anfangsbuchstaben der Nachnamen der drei Autoren Alfred V. Aho, Peter J. Weinberger und Brian W. Kernigham zusammengesetzt.

Awk gibt es seit Unix Version 3 - 1977. 1984 wurde von den selben Autoren eine neuere Version, nawk, herausgebracht. Die Version hier auf Archlinux basiert auf gawk von GNU, 1989.

Installation

Das Programm ist als awk in core verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S awk

Da awk im core-Paket ist, sollte es direkt zur Verfügung stehen, so dass es nicht mehr explizit installiert werden muss.,

Verwendung

Die Syntax zum Starten von awk hat zwei Formen:

awk [Optionen] 'Skript' var=wert Datei(en)
awk [Optionen] -f Skriptdatei var=wert Datei(en

Im Terminal könnt Ihr direkt ein Skript angeben oder solch ein Skript in einer Skriptdatei speichern und mit der Option -f angeben. Auch mehrere -f-Skripten sind erlaubt. Werte können auch auf der Kommandozeile einer Variablen zugewiesen werden. Das kann ein String- oder numerische Konstante, eine Shellvariable ($Name) oder eine Befehlsersetzung ("Befehl") sein - er steht aber erst nach der Ausführung der Anweisung BEGIN zur Verfügung. awk behandelt mehrere Datei(en). Wenn keine angegeben werden/wird, liest awk von der Standardeingabe.

Folgende Optionen werden erkannt:

-Ffs Setzt das Feldtrennzeichen auf fs. Dies entspricht der awk-internen Variablen FS. Jede Eingabezeile bzw. jeder Datensatz wird durch Whitespace (Leerzeichen oder Tabulatoren) oder ein anderes benutzerdefiniertes Trennzeichen in Felder unterteilt. Die einzelnen Felder werden über die Variablen $1, $2,..., $n angesprochen. $0 bezieht sich auf den gesamten Datensatz.
-v var=Wert Der Wert wird der Variablen var zugewiesen. Dies ermöglicht eine Zuweisung, bevor die Ausführung des Scripts beginnt.

Beispiel

Um z.B. die ersten drei (durch einen Doppelpunkt getrennten) Felder aller Datensätze jeweils auf einer eigenen Zeile auszugeben, benutzt den folgenden Befehl (als Beispiel):

awk -F: '{ print $1; print $2; print $3 }' /etc/passwd

ergibt:

root
x
0
bin
x
1
.
.
.