Ich habe die Gewohnheit, eine Zeile pro Satz zu schreiben, weil ich normalerweise Dinge in LaTex kompiliere oder in einem anderen Format schreibe, bei dem Zeilenumbrüche ignoriert werden. Ich verwende eine leere Zeile, um den Beginn eines neuen Absatzes anzugeben.
Jetzt habe ich eine Datei in diesem Stil, die ich nur als einfachen Text senden möchte. Ich möchte alle einzelnen Zeilenumbrüche entfernen, aber die doppelten Zeilenumbrüche intakt lassen. Das habe ich gemacht:
sed 's/$^/NEWLINE/' file.txt | awk '{printf "%s ",$0}' | sed 's/NEWLINE/\n\n/g' > linebreakfile.txt
Dies ersetzt leere Zeilen durch Text, von dem ich sicher bin, dass er nicht in der Datei enthalten ist. NEWLINE
Dann werden alle Zeilenumbrüche mit awk entfernt (ich habe diesen Trick auf einer Website gefunden) und das NEWLINE
s durch die erforderlichen zwei Zeilenumbrüche ersetzt .
Dies scheint ein langwieriger Weg zu sein, um eine ziemlich einfache Sache zu tun. Gibt es einen einfacheren Weg? Wenn es eine Möglichkeit gäbe, mehrere Leerzeichen (die sich manchmal aus irgendeinem Grund einschleichen) durch einzelne Leerzeichen zu ersetzen, wäre dies auch gut.
Ich benutze Emacs. Wenn es also einen Emacs-spezifischen Trick gibt, der gut ist, würde ich lieber eine reine sed- oder reine awk-Version sehen.
tr -d "\n"
.