sed und awk ohne Geheimnisse

Wie bereits erwähnt, wird ein sed-Skript der Reihe nach ausgeführt. Zuerst wird nach einem übereinstimmenden Muster gesucht und die Anweisung ausgeführt. Dann wird die Ausgabe erzeugt und dieser Prozess für jede Zeile des Skripts wiederholt. Nach jeder Befehlsausführung innerhalb des Skripts wechselt sed zur nächsten Zeile der Eingabe-Datei und wiederholt diesen Prozess für jeden Befehl des Skripts.

sed wird von der Kommandozeile aus wie folgt aufgerufen:


#sed [Optionen] Skriptdatei/Befehl Eingabedatei

Als Beispieldaten dient eine einfache Adressliste mit Namen phonelist.txt. Der Datensatz enthält Name, private Telefon-Nummer, Handy-Nummer und E-Mail-Adresse:


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

Versuchen wir es zuerst einmal mit einem einfachen sed-Bearbeitungsbefehl:


$sed 's/100-/(100) /' phonelist.txt

Dieser Befehl ändert die erste Telefon-Nummer mit der Vorwahl 100 vom Format xxx-xxx-xxxx zu (xxx) xxx-xxxx.

Wenn wir alle 100er-Vorwahlen ändern wollen, benutzen wir die Option /g:


$sed 's/100-/(100) /g' phonelist.txt

Damit wird die Veränderung auf jedes Vorkommen des Musters innerhalb der Zeile angewandt. Man kann auch mehrere Anweisungen in einer Zeile unterbringen, entweder mit der Option -e oder durch Verwendung eines Semikolons (;) zur Trennung der Befehle:


$sed -e 's/100-/(100) /g'-e 's/101-/(101) /g' phonelist
$sed 's/100-/(100) /g'; 's/101-/(101) /g' phonelist

Sobald man mehrere Befehle braucht, ist es praktischer, mit einer Skriptdatei zu arbeiten. Das Format für eine solche Skriptdatei ist einfach: ein Befehl pro Zeile.


$sed -f scriptfile inputfile

Mithilfe von Shell-Umleitungen kann man die Ausgabe in einer Datei speichern:


$sed -f scriptfile inputfile >outputfile

Eine weitere gebräuchliche Option ist -n. Diese Option beschränkt die Ausgabe auf diejenigen Zeilen, bei denen mit einer Ausgabe zu rechnen ist. Diese sind mit einem /p am Ende des Befehl gekennzeichnet:


$sed -n 's/pattern/substitute/p' inputfile

Dieser Befehl druckt nur die vorgenommenen Veränderungen aus.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Microsoft stellt kleines KI-Modell Phi-3 Mini vor

Seine Trainingsdaten umfassen 3,8 Milliarden Parameter. Laut Microsoft bietet es eine ähnliche Leistung wie OpenAIs…

2 Tagen ago

Google schließt kritische Sicherheitslücke in Chrome

Sie erlaubt eine Remotecodeausführung außerhalb der Sandbox. Betroffen sind Chrome für Windows, macOS und Linux.

2 Tagen ago

Microsoft beseitigt Fehler im März-Sicherheitsupdate für Exchange Server

Probleme treten vor allem bei Nutzern von Outlook Web Access auf. Das optionale Hotfix-Update für…

3 Tagen ago

Neue iPads: Apple kündigt Event für 7. Mai an

Die Einladung zeigt einen zeichnenden Apple Pencil. Der wiederum deutet auf neue iPads hin. Es…

3 Tagen ago

EU-Parlament stimmt für Recht auf Reparatur

Die Richtlinie erhält 584 Ja-Stimmen und 3 Gegenstimmen. Das „Recht auf Reparatur“ beinhaltet unter bestimmten…

3 Tagen ago

Forscher entwickeln Exploits per GPT-4 aus Sicherheitswarnungen

Die Tests basieren auf tatsächlich existierenden Sicherheitslücken. GPT-4 erreicht eine Erfolgsquote von 87 Prozent. Alle…

4 Tagen ago