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.
Neueste Kommentare
Noch keine Kommentare zu sed und awk ohne Geheimnisse
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.