awk ed
Ein Textverarbeitungsprogramm ähnlich sed.
Table of Contents
Generell ed
Programmaufruf ed
awk 'befehle' zu_bearbeitende_dateien
oder
awk -f befehls_datei zu_bearbeitende_dateien
oder
befehl | awk 'befehle'
Arbeitsweise ed
Awk-Scripte haben die Form:
awk '/muster1/ {befehl1} /muster2/ {befehl2} ...' dateienHierbei werden Eingabe-Dateien zeilenweise mit den Mustern verglichen (reguläre Ausdrücke) und bei Erfolg der nachfolgende Befehl ausgeführt.
- spezielle Muster
- wird kein Muster angegeben, wird der Befehl für jede Zeile ausgeführt
- bei BEGIN (ohne /../) wird der Befehl vor der ersten Zeile ausgeführt
- bei END wird nach der letzten Zeile ausgeführt
Jede Zeile der Eingabe-Datei wird in Worte/Spalten unterteilt. Die einzelnen Worte der Zeile sind über Variablen \(1, \)2,... ansprechbar, die gesamte Zeile als \(0\lt /tt\gt . Die Trennung zwischen Worten/Spalten geschieht durch Leerzeichen oder Tab. == Befehle == Es können mehrere Befehle nacheinander ausgeführt werden: {befehl1; befehl2; ...} === print === \lt tt\gt print\lt /tt\gt gibt Strings und Variablen aus (stdout). Werden mehrere Ausgaben durch Komma getrennt angegeben, werden sie bei der Ausgabe durch Leerzeichen getrennt. Ohne Komma werden sie direkt aneinandergehängt. print `hallo` `michi` -\gt `hallomichi` print `hallo`, `michi` -\gt `hallo michi` print \)1 -> erstes Wort der Zeile
Variablen ed
spezielle Variabel ed
- \(0\lt /tt\gt : die gesamte Zeile * \lt tt\gt \)1, $2,...: das 2.,3.,... Wort der Zeile
- NR: Zeilennummer der Eingabe
- FS: Trennzeichen bei der Wort-Erkennung
- OFS: Trennzeichen bei der Ausgabe mehrerer Werte durch (Komma-Trennung in print)
- ORS: Trennzeichen zwischen Ausgabe-Zeilen