Textdateien bearbeiten mit dem UNIX-Tool awk

Datenstruktur: Arrays

In awk gibt es zwei Arten von Arrays: normale und assoziative. Ein normales Array wird mit Ganzzahlen indiziert, beginnend mit 0 in 1er-Schritten:


Arrayname[index] = value

Assoziative Arrays werden mit Strings indiziert:


Arrayname[string] = value

awk kennt auch mehrdimensionale Arrays, die aus beliebigen Typen aufgebaut sein können:


Arrayname[index1][index2] = value
Arrayname[string1][string2] = value
Arrayname[index1][string2] = value

Löschen kann man einzelne Elemente mit delete(arrayname[index]).

awk-Aktionen

Die Default-Aktion print gibt jedes Feld an stdout (Standard Output) aus, wobei die Felder vom OFS (Output Field Separator; standardmäßig ein Leerzeichen) getrennt werden, am Schluss folgt ein Zeilenumbruch (n). Wenn bestimmte Werte angegeben sind (wie z.B. $1), werden nur diese Felder ausgegeben. Man kann Printf(format, value, value, …) verwenden, um die Ausgabe wie bei C zu formatieren. awk verwendet auch dieselben Operatoren wie C (außer Bitoperatoren) sowie einige weitere für die Textbearbeitung.

awk enthält eine Reihe eingebauter Funktionen. Einen Substring erhält man mit substr(s,p,l), wobei s der Original-String, p der Offset ist und l die Länge des Substrings. Die Länge eines Strings (in Bytes) erhält man mit der Funktion length(). Mathematische Funktionen wie sin, cos, tan, exp, log und rand() sind ebenfalls verfügbar. Hier eine Liste mit weiteren nützlichen eingebauten Funktionen:

  • system(command) übergibt den Befehl command zur Ausführung an das lokale Betriebssystem und gibt den vom Betriebssystem gelieferten Exit-Status-Code zurück.
  • gsub(re,sub,str) ersetzt im String str jedes Vorkommen des Regulären Ausdrucks re durch den Ersatzstring sub und gibt die Anzahl der durchgeführten Ersetzungen zurück.
  • int(expr) gibt den Wert von expr zurück, wobei alle Nachkommastellen entfernt werden.
  • match(str,re) liefert die Stelle im String str zurück, an der der Reguläre Ausdruck re passt, und initialisiert RSTART und RLENGTH. Wenn re nicht gefunden wird, ist der Rückgabewert 0.
  • sub(re,sub,str) ersetzt im String str das erste Vorkommen des Regulären Ausdrucks re durch den Ersatzstring sub. Bei Erfolg wird 1 zurückgegeben, sonst 0.
  • tolower(str) verwandelt im String str alle Großbuchstaben in Kleinbuchstaben und gibt das Ergebnis zurück.
  • split(str,arrname,sep) teilt den String str in Einzelteile unter Verwendung von sep als Trennzeichen und weist die Teile dem Array arrname zu, beginnend mit Index 1. Wenn kein Wert für sep angegeben ist, wird FS verwendet.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Textdateien bearbeiten mit dem UNIX-Tool awk

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *