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.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

iOS und iPadOS 18.2 beseitigen 21 Sicherheitslücken

Schädliche Apps können unter Umständen einen Systemabsturz auslösen. Mindestens eine Anfälligkeit erlaubt eine Remotecodeausführung.

2 Wochen ago

Top-Malware im November: Infostealer Formbook bleibt Nummer 1

Sein Anteil an allen Infektionen steigt in Deutschland auf 18,5 Prozent. Das Botnet Androxgh0st integriert…

2 Wochen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome

Betroffen sind Chrome 131 und früher für Windows, macOS und Linux. Angreifer können unter Umständen…

2 Wochen ago

Data Analytics: Dienstleister wachsen zweistellig

Marktforscher Lündendonk erwartet für das Jahr 2025 ein durchschnittliches Umsatzwachstum von 14,9 Prozent.

2 Wochen ago

Open-Source-Malware auf Rekordniveau

Alarmierender Anstieg von Open-Source-Malware / Seit 2019 haben Sonatype-Analysen mehr als 778.500 bösartige Pakete aufgedeckt

2 Wochen ago

Bayerische KI-Agentur bietet KI-KOMPASS

Das KI-Werkzeug "BAIOSPHERE KI-KOMPASS" soll Unternehmen den Einstieg in KI erleichtern.

2 Wochen ago