Textdateien bearbeiten mit dem UNIX-Tool awk

awk-Befehle haben eine einfache Struktur, sie bestehen aus:

  • einem Muster, üblicherweise einem Regulären Ausdruck, der verwendet wird, um die zu verarbeitenden Daten auszuwählen, und/oder einer Aktion, mit der die ausgewählten Daten verarbeitet werden – mindestens eins von beiden muss angegeben werden;
  • geschweiften Klammern {}, in denen die Aktion beschrieben wird.

Wenn nur ein Muster angegeben ist, ist die Default-Aktion print. Wenn nur eine Aktion angegeben ist, wird jede Zeile bearbeitet. Werden beide verwendet, wird die Aktion auf jede Zeile angewandt, für die das Muster zutrifft. Eine Aktion kann aus mehreren Anweisungen bestehen, die durch Semikolons getrennt sind.

Die Zeilenauswahl verwendet entweder kein, ein oder zwei Auswahlkriterien. Wenn mehrere Kriterien angegeben sind, werden sie durch Kommata getrennt. Das Muster kann ein Regulärer Ausdruck oder ein Boolscher Ausdruck sein. Wie bereits erwähnt, wird die Aktion für jede Eingabezeile ausgeführt, sofern kein Muster angegeben ist. Ist ein Muster angegeben, wird der Befehl nur für die Zeilen ausgeführt, auf die das Auswahlkriterium zutrifft. Werden zwei Muster verwendet, beginnen die zu verarbeitenden Daten mit der ersten Zeile, auf die die erste Bedingung zutrifft, und enden mit der Zeile, auf die die zweite Bedingung passt. Alle dazwischen liegenden Zeilen werden bearbeitet. Jedes Muster wird auf jede Zeile der Eingabedaten angewandt, solange nicht bei einer früheren Aktion ein next-Ausdruck angewandt wurde.

Die Verarbeitung fängt mit BEGIN-Blöcken an. BEGIN ist ein reserviertes Wort in awk, es muss vollständig groß geschrieben werden. Als nächstes werden die Variablen von der Kommandozeile zugewiesen. Dann wird jede Zeile der Eingabe gelesen und fest eingebauten Variablen zugewiesen. Zu jedem Befehl wird das zugehörige Muster ausgewertet und der Befehl ausgeführt, wenn das Muster passt. Zum Schluss werden die END-Blöcke ausgeführt.

awk verfügt über mehrere eingebaute Datentypen:

  • Strings (in Anführungszeichen)
  • Zahlen (sowohl Ganzzahlen als auch Fließkommazahlen) in Dezimalschreibweise, Nicht-Ganzzahlen werden durch einen Punkt gekennzeichnet
  • Reguläre Ausdrücke verwenden den Schrägstrich (/) als Begrenzungszeichen

Variablen müssen nicht deklariert werden und können beliebige Datentypen enthalten, die sich auch im Verlauf des Programms ändern dürfen. Variablen-Namen müssen mit einem Buchstaben beginnen und bestehen aus weiteren Buchstaben, Ziffern oder Unterstrichen, wie Listing A zeigt.

awk verwendet für eingebaute Variablen nur Großbuchstaben, dieses Format sollte man also bei eigenen Variablen vermeiden. Die gebräuchlichsten eingebauten Variablen sind NR, NF und FS. NR ist die Nummer der aktuellen Zeile, NF ist die Anzahl der Felder in der aktuellen Zeile, und FS ist das Trennzeichen für Eingabefelder. Jeder einzelne Datensatz wird in Felder mit den Namen $1, $2 etc. geteilt, wobei $0 den kompletten Datensatz enthält. Auf Felder kann man zugreifen, indem man entweder $n oder $var benutzt, wobei var ein Wert zwischen 0 und NF ist.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Hacker missbrauchen Google Calendar zum Angriff auf Postfächer

Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…

6 Tagen ago

Bedrohungen in Europa: Schwachstellen in der Lieferkette dominieren

Hinter 84 Prozent der Zwischenfälle bei Herstellern stecken Schwachstellen in der Lieferkette. Auf dem Vormarsch…

6 Tagen ago

Bericht: Apple arbeitet an faltbarem iPad

Es kommt angeblich 2028 auf den Markt. Das aufgeklappte Gerät soll die Displayfläche von zwei…

7 Tagen ago

HPE baut Supercomputer am Leibniz-Rechenzentrum

Das System basiert auf Hardware von HPE-Cray und Nvidia. Die Inbetriebnahme erfolgt 2027.

1 Woche ago

Bund meldet Fortschritte in der Netzversorgung

Die Bundesnetzagentur hat ihr Gigabit-Grundbuch aktualisiert. Drei von vier Haushalten sollen jetzt Zugang zu Breitbandanschlüssen…

1 Woche ago

Vorinstallierte Schadsoftware auf IoT-Geräten

Mit dem Internet verbundene Digitale Bilderrahmen oder Mediaplayer können mit Schadsoftware infiziert werden und sind…

1 Woche ago