Sed: Unterschied zwischen den Versionen
| Zeile 37: | Zeile 37: | ||
*sed "s/M[ea][yi]er/Müller/" test.dat | *sed "s/M[ea][yi]er/Müller/" test.dat | ||
;Stelle bei allen Meiervarianten den Nachnamen vor den Vornamen | ;Stelle bei allen Meiervarianten den Nachnamen vor den Vornamen | ||
| − | *sed "s/^\([A-Z][a-z] | + | *sed "s/^\([A-Z][a-z]\+\) \(M[ea][yi]er\)/\2 \1/" test.dat |
=Links= | =Links= | ||
*https://de.wikipedia.org/wiki/Sed_(Unix) | *https://de.wikipedia.org/wiki/Sed_(Unix) | ||
*https://wiki.ubuntuusers.de/sed/ | *https://wiki.ubuntuusers.de/sed/ | ||
Version vom 27. November 2019, 14:18 Uhr
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