Sed

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Grundlegendes

sed steht für Stream EDitor und ist ein Unix-Werkzeug, mit dem Text-Datenströme bearbeitet werden können. Der Datenstrom kann auch aus einer Datei gelesen werden. Im Gegensatz zu einem Texteditor wird die Ursprungsdatei aber nicht verändert.

Im Gegensatz zu einem interaktiven Texteditor, wie etwa dem vi, wird sed mittels eines Skripts gesteuert.

Der sed-Befehlssatz orientiert sich an jenem des zeilenorientierten Texteditors ed. Dabei werden für die Text-Durchmusterung laut der POSIX-Spezifikation eine bestimmte Abart der Regular Expressions, sogenannte (POSIX-) Basic Regular Expressions (BRE) verwendet.

Arbeitsweise

sed kann sowohl innerhalb einer Pipeline als auch auf Dateien arbeiten. Ausgaben erfolgen grundsätzlich auf <stdout>, Fehlermeldungen auf <stderr>.

Test Dateil

  • cat test.dat
Erwin Ruediger 
Karl Erwin
Michael Rudi Erwin Karl Erwin
Tanja Michaela 
Olga Tanja Frieda
Hans Meier
Franz Maier
Otto Mayer
Rudi Meyer

Beispiele

Ersetze in jeder Zeile das erste Erwin durch Peter
  • sed "s/Erwin/Peter/" test.dat
Ersetze in jeder Zeile jedes Erwin durch Peter
  • sed "s/Erwin/Peter/g" test.dat
Ersetze in jeder Zeile Erwin am Zeilenanfang durch Peter
  • sed "s/^Erwin/Peter/g" test.dat
Ersetze in jeder Zeile Erwin am Zeilenende durch Peter
  • sed "s/Erwin$/Peter/g" test.dat
Ersetze in von der 2. bis zur 3. Zeile Erwin am Zeilenende durch Peter
  • sed "2,3s/Erwin$/Peter/" test.dat
Ersetze Michael durch Marc nicht Michaela (Wortende)
  • sed "s/Michael\>/Marc/" test.dat
Füge zu Karl -Heinz hinzu
  • sed "s/Karl/&-Heinz/" test.dat
Ersetze alle Schreibweisen von Meier durch Müller
  • sed "s/M[ea][yi]er/Müller/" test.dat
Stelle bei allen Meiervarianten den Nachnamen vor den Vornamen
  • sed "s/^\([A-Z][a-z]\+\) \(M[ea][yi]er\)/\2 \1/" test.dat

Links