Sed: Unterschied zwischen den Versionen
| Zeile 20: | Zeile 20: | ||
=Beispiele= | =Beispiele= | ||
| + | ==Suchen und ersetzen== | ||
;Ersetze in jeder Zeile das erste Erwin durch Peter | ;Ersetze in jeder Zeile das erste Erwin durch Peter | ||
*sed "s/Erwin/Peter/" test.dat | *sed "s/Erwin/Peter/" test.dat | ||
| Zeile 40: | Zeile 41: | ||
;Stelle bei allen Meiervarianten den Nachnamen vor den Vornamen | ;Stelle bei allen Meiervarianten den Nachnamen vor den Vornamen | ||
*sed "s/^\([A-Z][a-z]\+\) \(M[ea][yi]er\)/\2 \1/" test.dat | *sed "s/^\([A-Z][a-z]\+\) \(M[ea][yi]er\)/\2 \1/" test.dat | ||
| + | ==Ausgewählte Optionen== | ||
| + | ;-n unterdrückt die Ausgabe und p sorgt dafür das die Zeilen die verändert wurden angezeigt werden | ||
| + | *sed -n "s/Karl/Charlie/p" | ||
| + | ;Mehrere Durchgänge | ||
| + | *sed -e "s/Karl/Charlie/" -e "s/Olga/Svenja/" test.dat | ||
| + | ;Editierfunktionen in eigene Datei auslagen | ||
| + | *cat such.conf | ||
| + | s/Karl/Charlie/ | ||
| + | s/Olga/Svenja/ | ||
| + | *sed -f such.conf 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:33 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
Suchen und ersetzen
- 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 von der Zeile die mit Karl beginnt bis zur Zeile die mit Michael anfängt Erwin durch Peter
- sed "/^Karl/,/^Michael/s/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
Ausgewählte Optionen
- -n unterdrückt die Ausgabe und p sorgt dafür das die Zeilen die verändert wurden angezeigt werden
- sed -n "s/Karl/Charlie/p"
- Mehrere Durchgänge
- sed -e "s/Karl/Charlie/" -e "s/Olga/Svenja/" test.dat
- Editierfunktionen in eigene Datei auslagen
- cat such.conf
s/Karl/Charlie/ s/Olga/Svenja/
- sed -f such.conf test.dat