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.

 

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 *