Unix-Linux, Eine Einführung von Wolfgang Paulina (de)
Unix-Linux, Eine Einführung von Wolfgang Paulina (de)
Unix-Linux, Eine Einführung von Wolfgang Paulina (de)
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
7. Textmusterverarbeitung mit awk 67<br />
7.3. Bedingungen<br />
Bedingungen dienen in erster Linie zur Selektion <strong>von</strong> Zeilen <strong>de</strong>s Eingabetextes. Als Bedingungen sind reguläre<br />
Ausdrücke und Vergleichsausdrücke zugelassen. Reguläre Ausdrücke müssen bei awk in Schrägstriche<br />
/ eingeschlossen wer<strong>de</strong>n.<br />
rechner> awk ’/OTTO|egon/ {print NR, $0}’ daten<br />
gibt die Zeilen, in <strong>de</strong>nen OTTO o<strong>de</strong>r egon vorkommen, mit Zeilennummer<br />
aus<br />
rechner> awk ’/[oO][tT][tT][oO]/ {print NR, $0}’ daten<br />
gibt alle Zeilen aus, in <strong>de</strong>nen Otto vorkommt<br />
rechner> awk ’$2 ~/i|p|m/ {print}’ daten<br />
gibt alle Zeilen aus, in <strong>de</strong>ren zweites Feld i, p o<strong>de</strong>r m vorkommt<br />
rechner> awk ’length > 25’ daten<br />
gibt alle Zeilen aus, <strong>de</strong>ren Länge 25 Zeichen überschreitet<br />
rechner> awk ’NR >= 2 && NR awk ’/elly/,/bodo/ {print}’ daten<br />
selektiert alle Zeilen <strong>von</strong> elly bis bodo<br />
rechner> awk ’NR == 2,NR == 7 {print}’ daten<br />
startet Ausgabe bei Zeile 2 und en<strong>de</strong>t bei Zeile 7<br />
Spezielle Bedingungen<br />
Spezielle Bedingungen übernehmen die Programmsteuerung vor bzw. nach <strong>de</strong>r Hauptschleife.<br />
BEGIN { Aktion }<br />
END { Aktion }<br />
wird vor <strong>de</strong>m Lesen <strong>de</strong>r ersten Eingabezeile ausgeführt; kann benutzt<br />
wer<strong>de</strong>n, um Variablen vorzubesetzen, Überschriften auszugeben<br />
usw.<br />
wird nach <strong>de</strong>m Lesen <strong>de</strong>r letzten Zeile ausgeführt, für die Ausgabe<br />
<strong>von</strong> Statistiken, Meldungen, usw.<br />
rechner> awk ’BEGIN {print "Hier fang ich an"} \<br />
NR==2,NR==7 {print NR, $0} \<br />
END {print "Hier ist das En<strong>de</strong>"}’ daten<br />
Obiges Beispiel zeigt auch die Verwendung <strong>von</strong> awk-Statements über mehrere Zeilen. Die Fortsetzung <strong>de</strong>s<br />
Programmtextes wird am Zeilenen<strong>de</strong> mit Backslash markiert. Ist <strong>de</strong>r Programmtext dagegen in einer eigenen<br />
awk-Programmdatei abgespeichert, so wer<strong>de</strong>n sowohl die <strong>de</strong>n Programmtext kennzeichnen<strong>de</strong>n einfachen<br />
Hochkommas als auch die Backslashes weggelassen.