Thema: Mit sed Textdateien manipulieren Zielgruppe: CLI-Nutzer Motivation: Schnelles Werkzeug für Textdateien
Inhaltsverzeichnis
sed
Der Befehlsname ist das Kürzel von stream editor und ist geeignet um große oder/und viele Dateien zu manipulieren. Bei wiederkehrenden Aufgaben kann sed gut in Scripten eingesetzt werden.
Dieser Befehl kann noch viel mehr als massenhaft Texte zu ändern, zu korrigieren oder zu aktualisieren. Doch ich möchte Benutzern helfen, die eine kleine Übersicht über möglicherweise häufig benötigte Funktionen für Textdateien suchen.
Die folgenden Funktionen habe ich zur Sicherheit so gestaltet, dass die Originaldatei erhalten bleibt. Selbstverständlich kann bei genügender Erfahrung gleich an der Quelldatei gearbeitet werde.
Textdateien
Hiermit sind alle Dateien gemeint, die mit einem Texteditor bearbeitet werden können, also das Gegenteil von binären Dateien.
Beispielsweise mit folgenden Endungen: css, csv, html, info, me, md, php, sh, svg, txt, ohne Endung und weitere.
Los gehts
Zeilen bearbeiten
Erste Zeile löschen:sed "1d" Datei.txt > Datei_neu.txt
Leerzeilen löschen mit allen nicht sichtbaren Zeichen und Steuerzeichen:sed "/^\s*$/d" Datei.txt > Datei_neu.txt
Leerzeichen am Zeilenanfang löschen, auch mehrere:sed "s/^ *//" Datei.txt > Datei_neu.txt
Leerzeichen am Zeilenende löschen, auch mehrere:sed "s/ *$//" Datei.txt > Datei_neu.txt
Zeilen, die mit Muster „@“ beginnen, löschen:sed "/^@/d" Datei.txt > Datei_neu.txt
Zeile ersetzt alles, was „Start“ als Zeilenanfang besitzt und wird mit „Beginn“ komplett ersetzt:sed "s/^Start.*$/Beginn/" Datei.txt > Datei_neu.txt
Nach jeder Zeile, eine Leerzeile einfügen:sed -e "s/$/\n/g" Datei.txt > Datei_neu.txt
Neue Zeile vor Zeile 42 einfügen, mit dem Wort „Start“:sed "42iStart" Datei.txt > Datei_neu.txt
Neue Zeile nach Zeile 42 einfügen, mit dem Wort „Start“:sed "42aStart" Datei.txt > Datei_neu.txt
Neue Zeile nach der letzten Zeile einfügen mit dem Wort „Ende“:sed "$aEnde" Datei.txt > Datei_neu.txt
Ergänzungen
Gerne nehme ich Anregungen und Verbesserungen entgegen, danke.
