Sie können dies tun, indem leere Zeilen zuerst zu entfernen und Zeilenabstand mit G anhängen Befehl:
sed '/^$/d;G' text.txt
Edit2: der obige Befehl Leerzeilen zwischen jedem hinzufügen wird Absatz, wenn dies nicht gewünscht ist, könnten Sie tun:
sed -n '1{/^$/p};{/./,/^$/p}'
Oder, wenn Sie nichts dagegen haben, dass alle führenden Leerzeilen gestrippt wird, kann es so geschrieben werden:
sed -n '/./,/^$/p'
da der erste Ausdruck wertet nur die erste Zeile, und druckt sie, wenn es leer ist.
Hier: -n Option unterdrückt Musterraum Auto-Drucken, /./,/^$/ definiert den Bereich zwischen zumindest einem Zeichen und keine Zeichen (dh Leerraum zwischen newlines) und p sagt, um diesen Bereich zu drucken.
versuchen, alle Antworten beim nächsten Mal zu lesen: http://stackoverflow.com/questions/922449/how-can-i-replace-mutliple-empty-lines-with -a-single-leer-line-in-bash/922499 # 922499 – OrangeDog
Eigentlich habe ich alle Antworten gelesen. Die Antwort "Clue Less" und "Berk Güder" kann nur alle leeren Zeilen entfernen, nicht das, was ich brauchte. –
* -i * wechseln? * sed -i '/^$/d' text.txt * sollte funktionieren und soweit ich es überprüft habe, ist _is_ in der Antwortliste (neben * -i * Option). –