Sed Beispiele: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
Zeile 9: Zeile 9:
 
* 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 ==
Zeile 16: Zeile 25:
 
* 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 34: 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 40: 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

 → Entfernt führende Leerzeichen/Tabs
 → Entfernt trailing Leerzeichen
 → 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.