Sed Beispiele: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „== Sed – Beispiele == * Konkrete Anwendungsfälle für Sed: Substitutionen, Zeilenmanipulation und kombinierte Befehle. == Substitution == <syntaxhighlight…“) |
|||
| (Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | + | = Sed – Beispiele = | |
* Konkrete Anwendungsfälle für Sed: Substitutionen, Zeilenmanipulation und kombinierte Befehle. | * Konkrete Anwendungsfälle für Sed: Substitutionen, Zeilenmanipulation und kombinierte Befehle. | ||
== Substitution == | == Substitution == | ||
| − | |||
* sed 's/foo/bar/' beispiel.txt | * sed 's/foo/bar/' beispiel.txt | ||
| − | |||
→ Ersetzt das erste Vorkommen von "foo" durch "bar" pro Zeile | → Ersetzt das erste Vorkommen von "foo" durch "bar" pro Zeile | ||
| − | |||
* sed 's/foo/bar/g' beispiel.txt | * sed 's/foo/bar/g' beispiel.txt | ||
| − | |||
→ Ersetzt alle Vorkommen von "foo" durch "bar" pro Zeile | → Ersetzt alle Vorkommen von "foo" durch "bar" pro Zeile | ||
| + | |||
| + | * sed 's/foo/bar/2' beispiel.txt | ||
| + | → Ersetzt nur das zweite Vorkommen von "foo" in jeder Zeile | ||
| + | |||
| + | * sed 's/foo/bar/gi' beispiel.txt | ||
| + | → Ersetzt alle Vorkommen case-insensitive | ||
| + | |||
| + | * sed 's/\(foo\) \(bar\)/\2 \1/' beispiel.txt | ||
| + | → Vertauscht "foo" und "bar" mittels Backreferences | ||
== Zeilenbereichsoperationen == | == Zeilenbereichsoperationen == | ||
| − | |||
* sed '2,4s/foo/bar/' beispiel.txt | * sed '2,4s/foo/bar/' beispiel.txt | ||
| − | |||
→ Ersetzt "foo" durch "bar" nur in den Zeilen 2–4 | → Ersetzt "foo" durch "bar" nur in den Zeilen 2–4 | ||
| − | |||
* sed -n '3,5p' datei.txt | * sed -n '3,5p' datei.txt | ||
| − | |||
→ Gibt nur die Zeilen 3 bis 5 aus | → Gibt nur die Zeilen 3 bis 5 aus | ||
| + | |||
| + | * sed '5,$s/foo/bar/' datei.txt | ||
| + | → Ersetzt ab Zeile 5 bis Dateiende | ||
| + | |||
| + | * sed '/start/,/end/s/foo/bar/' datei.txt | ||
| + | → Ersetzt zwischen "start" und "end" Markern | ||
== Löschen und Einfügen == | == Löschen und Einfügen == | ||
| − | |||
* sed '/^#/d' config.txt | * sed '/^#/d' config.txt | ||
| − | |||
→ Löscht alle Kommentarzeilen, die mit '#' beginnen | → Löscht alle Kommentarzeilen, die mit '#' beginnen | ||
| − | + | * sed '/^$/d' datei.txt | |
| + | → Löscht alle Leerzeilen | ||
| + | |||
* sed '2i\Neue Zeile vor Zeile 2' datei.txt | * sed '2i\Neue Zeile vor Zeile 2' datei.txt | ||
| + | → Fügt Text vor Zeile 2 ein | ||
| + | |||
* sed '3a\Zeile nach Zeile 3' datei.txt | * sed '3a\Zeile nach Zeile 3' datei.txt | ||
| − | + | → Fügt Text nach Zeile 3 ein | |
| + | |||
| + | * sed '5c\Diese Zeile ersetzt Zeile 5' datei.txt | ||
| + | → Ersetzt gesamte Zeile 5 | ||
| + | |||
| + | == Datei-Operationen == | ||
| + | * sed 'w output.txt' datei.txt | ||
| + | → Schreibt Ausgabe in zusätzliche Datei | ||
| + | |||
| + | * sed '/pattern/r zusatz.txt' datei.txt | ||
| + | → Fügt Inhalt von zusatz.txt nach matching Zeilen ein | ||
| + | |||
| + | * sed -i.bak 's/foo/bar/g' datei.txt | ||
| + | → Bearbeitet Datei direkt mit Backup | ||
== Kombination mehrerer Befehle == | == Kombination mehrerer Befehle == | ||
| − | |||
* sed -e 's/foo/bar/g' -e '/^#/d' datei.txt | * sed -e 's/foo/bar/g' -e '/^#/d' datei.txt | ||
| − | + | → Kombiniert Ersetzung und Löschung | |
| + | |||
| + | * sed 's/foo/bar/g; /^#/d' datei.txt | ||
| + | → Mehrere Befehle mit Semikolon getrennt | ||
| + | |||
| + | * sed -f skript.sed datei.txt | ||
| + | → Befehle aus externer Datei lesen | ||
== Pipes mit Sed == | == Pipes mit Sed == | ||
| − | |||
* ls -l | sed 's/^/Datei: /' | * ls -l | sed 's/^/Datei: /' | ||
| − | + | → Fügt jeder Zeile "Datei: " voran | |
| + | |||
| + | * cat logfile | sed 's/ERROR/FEHLER/g' | sed 's/WARNING/WARNUNG/g' | ||
| + | → Mehrere Sed-Kommandos in Pipeline | ||
| + | |||
| + | * ps aux | sed -n '2,$p' | sed 's/ */ /g' | ||
| + | → Kombination mit anderen Kommandos | ||
| + | |||
| + | == Komplexe Muster == | ||
| + | * sed 's/^[[:space:]]*//' datei.txt | ||
| + | → Entfernt führende Leerzeichen/Tabs | ||
| + | |||
| + | * sed 's/[[:space:]]*$//' datei.txt | ||
| + | → Entfernt trailing Leerzeichen | ||
| + | |||
| + | * sed -n '/^[[:alnum:]]/p' datei.txt | ||
| + | → Zeilen die mit Alphanumerisch beginnen | ||
| + | |||
| + | * sed 's/.*/\U&/' datei.txt | ||
| + | → Konvertiert gesamte Zeile zu Großbuchstaben | ||
== Hinweise == | == Hinweise == | ||
| Zeile 50: | Zeile 95: | ||
* Sed-Befehle können sequentiell oder kombiniert ausgeführt werden. | * Sed-Befehle können sequentiell oder kombiniert ausgeführt werden. | ||
* Sed ist ideal für Skripte, da es automatisierte Textmanipulation ermöglicht. | * Sed ist ideal für Skripte, da es automatisierte Textmanipulation ermöglicht. | ||
| + | * Reguläre Ausdrücke müssen oft escaped werden. | ||
| + | * Hold Space ermöglicht komplexe mehrzeilige Operationen. | ||
== Aufgaben == | == Aufgaben == | ||
| Zeile 56: | Zeile 103: | ||
* Füge in Zeile 1 einen Kommentar "# Start" ein. | * Füge in Zeile 1 einen Kommentar "# Start" ein. | ||
* Kombiniere zwei Befehle: Ersetze "foo" durch "bar" und lösche alle Zeilen, die mit "#" beginnen. | * Kombiniere zwei Befehle: Ersetze "foo" durch "bar" und lösche alle Zeilen, die mit "#" beginnen. | ||
| + | * Entferne alle Leerzeichen am Zeilenende einer Konfigurationsdatei. | ||
| + | * Konvertiere alle ERROR Meldungen in einer Logdatei zu Großbuchstaben. | ||
Aktuelle Version vom 18. Oktober 2025, 08:44 Uhr
Sed – Beispiele
- Konkrete Anwendungsfälle für Sed: Substitutionen, Zeilenmanipulation und kombinierte Befehle.
Substitution
- sed 's/foo/bar/' beispiel.txt
→ Ersetzt das erste Vorkommen von "foo" durch "bar" pro Zeile
- sed 's/foo/bar/g' beispiel.txt
→ Ersetzt alle Vorkommen von "foo" durch "bar" pro Zeile
- sed 's/foo/bar/2' beispiel.txt
→ Ersetzt nur das zweite Vorkommen von "foo" in jeder Zeile
- sed 's/foo/bar/gi' beispiel.txt
→ Ersetzt alle Vorkommen case-insensitive
- sed 's/\(foo\) \(bar\)/\2 \1/' beispiel.txt
→ Vertauscht "foo" und "bar" mittels Backreferences
Zeilenbereichsoperationen
- sed '2,4s/foo/bar/' beispiel.txt
→ Ersetzt "foo" durch "bar" nur in den Zeilen 2–4
- sed -n '3,5p' datei.txt
→ Gibt nur die Zeilen 3 bis 5 aus
- sed '5,$s/foo/bar/' datei.txt
→ Ersetzt ab Zeile 5 bis Dateiende
- sed '/start/,/end/s/foo/bar/' datei.txt
→ Ersetzt zwischen "start" und "end" Markern
Löschen und Einfügen
- sed '/^#/d' config.txt
→ Löscht alle Kommentarzeilen, die mit '#' beginnen
- sed '/^$/d' datei.txt
→ Löscht alle Leerzeilen
- sed '2i\Neue Zeile vor Zeile 2' datei.txt
→ Fügt Text vor Zeile 2 ein
- sed '3a\Zeile nach Zeile 3' datei.txt
→ Fügt Text nach Zeile 3 ein
- sed '5c\Diese Zeile ersetzt Zeile 5' datei.txt
→ Ersetzt gesamte Zeile 5
Datei-Operationen
- sed 'w output.txt' datei.txt
→ Schreibt Ausgabe in zusätzliche Datei
- sed '/pattern/r zusatz.txt' datei.txt
→ Fügt Inhalt von zusatz.txt nach matching Zeilen ein
- sed -i.bak 's/foo/bar/g' datei.txt
→ Bearbeitet Datei direkt mit Backup
Kombination mehrerer Befehle
- sed -e 's/foo/bar/g' -e '/^#/d' datei.txt
→ Kombiniert Ersetzung und Löschung
- sed 's/foo/bar/g; /^#/d' datei.txt
→ Mehrere Befehle mit Semikolon getrennt
- sed -f skript.sed datei.txt
→ Befehle aus externer Datei lesen
Pipes mit Sed
- ls -l | sed 's/^/Datei: /'
→ Fügt jeder Zeile "Datei: " voran
- cat logfile | sed 's/ERROR/FEHLER/g' | sed 's/WARNING/WARNUNG/g'
→ Mehrere Sed-Kommandos in Pipeline
- ps aux | sed -n '2,$p' | sed 's/ */ /g'
→ Kombination mit anderen Kommandos
Komplexe Muster
- sed 's/^space:*//' datei.txt
→ Entfernt führende Leerzeichen/Tabs
- sed 's/space:*$//' datei.txt
→ Entfernt trailing Leerzeichen
- sed -n '/^alnum:/p' datei.txt
→ Zeilen die mit Alphanumerisch beginnen
- sed 's/.*/\U&/' datei.txt
→ Konvertiert gesamte Zeile zu Großbuchstaben
Hinweise
- Mit -i wird die Datei direkt verändert.
- Sed-Befehle können sequentiell oder kombiniert ausgeführt werden.
- Sed ist ideal für Skripte, da es automatisierte Textmanipulation ermöglicht.
- Reguläre Ausdrücke müssen oft escaped werden.
- Hold Space ermöglicht komplexe mehrzeilige Operationen.
Aufgaben
- Ersetze in einer Datei alle Vorkommen von "Test" durch "Prüfung".
- Lösche alle Zeilen, die mit "//" beginnen.
- Füge in Zeile 1 einen Kommentar "# Start" ein.
- Kombiniere zwei Befehle: Ersetze "foo" durch "bar" und lösche alle Zeilen, die mit "#" beginnen.
- Entferne alle Leerzeichen am Zeilenende einer Konfigurationsdatei.
- Konvertiere alle ERROR Meldungen in einer Logdatei zu Großbuchstaben.