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.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Salesforce: Mit Einstein GPT zurück auf die Überholspur?

Salesforce forciert den Ausbau seiner Industry Clouds. Mit ihrem Prozesswissen könnten deutsche IT-Dienstleister davon profitieren.

4 Tagen ago

Neue Backdoor: Bedrohung durch Malvertising-Kampagne mit MadMxShell

Bisher unbekannter Bedrohungsakteur versucht über gefälschte IP Scanner Software-Domänen Zugriff auf IT-Umgebungen zu erlangen.

5 Tagen ago

BSI-Studie: Wie KI die Bedrohungslandschaft verändert

Der Bericht zeigt bereits nutzbare Angriffsanwendungen und bewertet die Risiken, die davon ausgehen.

6 Tagen ago

KI-Wandel: Welche Berufe sich am stärksten verändern

Deutsche sehen Finanzwesen und IT im Zentrum der KI-Transformation. Justiz und Militär hingegen werden deutlich…

6 Tagen ago

Wie ein Unternehmen, das Sie noch nicht kennen, eine Revolution in der Cloud-Speicherung anführt

Cubbit ist das weltweit erste Unternehmen, das Cloud-Objektspeicher anbietet. Es wurde 2016 gegründet und bedient…

6 Tagen ago

Dirty Stream: Microsoft entdeckt neuartige Angriffe auf Android-Apps

Unbefugte können Schadcode einschleusen und ausführen. Auslöser ist eine fehlerhafte Implementierung einer Android-Funktion.

6 Tagen ago