04.11.2013 Aufrufe

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)

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!