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.
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.