Filter fĂĽr Textdateien
Ich habe eine Textdatei, in der ich gerne in jeder zweiten Zeile das Newline-Zeichen (\n) entfernen wĂĽrde. Wie kann ich das automatisieren?
Ich habe eine Textdatei, in der ich gerne in jeder zweiten Zeile das Newline-Zeichen (\n) entfernen wĂĽrde. Wie kann ich das automatisieren?
Diese Aufgabe erledigt zum Beispiel das Kommandozeilenwerkzeug sed für Sie. Unter unixoiden Betriebssystemen wie Linux oder Mac OS X ist es meist schon installiert. Unter Windows müssen Sie zuerst MSYS installieren (siehe c’t-Link).
Sobald Sed einsatzbereit ist, fĂĽhren Sie den folgenden Befehl aus:
sed 'N; s/\n//' Eingabe.txt > Ausgabe.txt
Bei einer Eingabe-Datei mit dem Format
AAA
BBB
CCC
erhalten Sie als Ergebnis:
AAA
BBB
CCC
Zur Erklärung: Das N ist die Anweisung an Sed, zur nächsten Zeile zu springen, der Befehl danach ist eine einfache Ersetzungsanweisung („ersetze \n durch nichts“). Bitte beachten Sie, dass der Befehl zum Entfernen aller Newlines in einem Text mit Sed um einiges komplexer ist (sed ': SCHLEIFE; N; $! b SCHLEIFE; s/\n//g' Eingabe.txt) und hier dann besser das deutlich schnellere und einfacher zu lesende paste -s -d ' ' Eingabe.txt verwendet werden sollte. Die Leerzeichen in den Sed-Befehlen dienen nur der Verbesserung der Lesbarkeit und sind nicht notwendig.