Nützliche `sed`-Skripte und -Muster
(github.com)- Nur eine einzelne Zeile ausgeben
→ sed -n '10p' file.txt
- Zeichenersetzung in allen Zeilen außer Zeile 5
→ sed '5!/s/foo/bar/' file.txt
- Regex-Ersetzung in allen Zeilen, die mit einem bestimmten Zeichen beginnen
→ sed '/^hello/ s/h/H/' file.txt
- Nur ab Zeile 5 bis zur letzten Zeile ersetzen
→ sed '5,$ s/foo/bar/' file.txt
- Leere Zeilen löschen
→ sed '/^$/d' file
- Alle Zeilen zwischen zwei Regexen ausgeben
→ sed -nE '/^foo/,/^bar/p' file.txt
- Benutzerdefinierten Trenner verwenden, um Zeichen mit Slash einfacher zu finden
→ sed 's_/bin/bash_/bin/sh_' file.txt
- Durch Leerzeichen getrennte doppelte Strings entfernen (dreifache Duplikate ausgenommen)
→ sed -E 's_([a-zA-Z0-9_]+) \1_\1_ig' f1
- Ein bestimmtes Muster suchen, ersetzen und nur die geänderten Zeilen in einer anderen Datei speichern
→ sed 's_foo_bar_w replaced.txt' file.txt
- Mehrere Ersetzungen gleichzeitig ausführen
→ sed -e 's_foo_bar_' -e 's_hello_HELLO_' file.txt
- Alle Kommentare zwischen zwei Keywords entfernen und eine Leerzeile einfügen
→ sed -E '/start/,/end/ s/#.*//' file.txt
- Alle Kommentare löschen, die mit # beginnen
→ sed -E '/^#/d' f1
- Nur bis zum Auftreten eines bestimmten Musters ausgeben
→ sed '/start/q' file.txt
- Nach einer bestimmten Zeile eine Datei einfügen
→ sed '5 r newfile.txt' file.txt
- Text nach der Zeile mit passendem Regex-Muster hinzufügen
→ sed '/foo/a\AFTER FOO' file.txt
- Eine Zeile mit passendem Regex-Muster ersetzen
→ sed '/foo/c\FOO IS CHANGED' file.txt
- Alle Kommentare, die mit # beginnen, in einer anderen Datei speichern
→ sed -E '/^#/w comments.txt' file.txt
- Jede zweite Zeile ausgeben (auch auf 3/4 usw. änderbar)
→ sed -n '1~2p' file.txt
- Datei direkt bearbeiten und dabei ein Backup erstellen
→ sed -i.bak 's/hello/HELLO/' file.txt
- Nach einem Regex-Treffer zwei Leerzeilen hinzufügen
→ sed -E '/^#/G G' file.txt
1 Kommentare
Dass man auch andere Zeichen als den Schrägstrich als Trennzeichen verwenden kann, ist wirklich ein unverzichtbarer Tipp.
Gerade beim Ändern von URLs für
apt-Repos kommt es ziemlich oft vor, dass man mit Schrägstrichen zu tun hat.