sed und awk ohne Geheimnisse

awk kann ebenfalls von der Kommandozeile aus oder per Skriptdatei zur Bearbeitung einer oder mehrerer Dateien aufgerufen werden:


$awk 'instructions' inputfiles
$awk -f scriptfile inputfiles

awk wandelt jede Zeile in einen Datensatz um, mit Leerzeichen oder Tabulatoren als Feldbegrenzer. Dies erlaubt die Bezugnahme auf diese Felder sowohl in Mustern als auch Anweisungen. $0 repräsentiert dabei den gesamten Datensatz (= Zeile), $1, $2, … verweisen auf die einzelnen Felder der Eingabezeile.

Ist kein Muster vorgegeben, wird das Default-Muster („alles“) verwendet. Das folgende Beispiel


$awk '{ print $1}' phonelist.txt

erzeugt diese Ausgabe:


John
Jane
Jimmy

Ist keine Anweisung angegeben, ist die Default-Anweisung print. So liefert


$awk '/Jane/' phonelist.txt

die Ausgabe


Jane Doe, 100-555-2222, 100-555-1113, janedoe@another.com

Richtig interessant wird es aber erst, wenn man sowohl Muster als auch Anweisungen verwendet. Mit der folgenden Zeile können wir z.B. Janes private Telefon-Nummer ausdrucken lassen:


$awk '/jane/ { print $3}' phonelist

Hier das Ergebnis:


100-555-2222

Den Feldbegrenzer kann man mit der Option -F beliebig ändern. Wir benutzen ein Komma, da unsere Telefonliste eine CSV-Datei ist.

Dieser Befehl:


$awk -F, '{print $1}' phonelist.txt

liefert uns alle Namen:


John Doe
Jane Doe
Jimmy Dean

Wenn wir die Ausgabe im Format Nachname, Vorname wünschen, können wir diese Anweisung verwenden:


$awk -F, '{print $2 $1}' phonelist.txt

Mit dem Ergebnis:


Doe, John
Doe, Jane
Dean, Jimmy

Soll jedes Feld in einer eigenen Zeile gedrucken werden, können wir ein Semikolon verwenden, um die print-Anweisungen voneinander zu trennen:


$awk -F, '{ print $1; print $2; print $3; print $4 }' phonelist.txt

Und so sieht das Ergebnis aus:


John Doe
100-555-1111
100-555-1112
johndoe@some.com
Jane Doe
100-555-2222
100-555-1113
janedoe@another.com
Jimmy Dean
101-555-1111
101-555-2222
deanj@jimmys.com

Um es noch einmal auf den Punkt zu bringen: sed wird vor allem zur Änderung von Daten verwandt, awk zu deren (Neu-)Formatierung. Für fortgeschrittenere Konzepte der sed- und awk-Programmierung steht eine Unmenge an Informationen zur Verfügung. Ein guter Ausgangspunkt sind dabei die FAQs zu sed und awk.

 

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu sed und awk ohne Geheimnisse

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *