495 Stimmen

Löschen Sie leere Zeilen mit sed

Ich versuche, leere Zeilen mit sed zu löschen:

sed '/^$/d'

aber bisher hatte ich kein Glück damit.

Zum Beispiel habe ich diese Zeilen:

xxxxxx

yyyyyy

zzzzzz

und ich möchte es so haben:

xxxxxx
yyyyyy
zzzzzz

Was sollte der Code dafür sein?

808voto

Kent Punkte 180747

Sie können Leerzeichen oder Tabs in Ihrer "leeren" Zeile haben. Verwenden Sie POSIX-Klassen mit sed, um alle Zeilen zu entfernen, die nur Leerzeichen enthalten:

sed '/^[[:space:]]*$/d'

Eine kürzere Version, die ERE verwendet, zum Beispiel mit gnu sed:

sed -r '/^\s*$/d'

(Beachten Sie, dass sed KEINE PCRE unterstützt.)

200voto

fedorqui Punkte 249453

Ich vermisse die awk -Lösung:

awk 'NF' file

Was zurückgeben würde:

xxxxxx
yyyyyy
zzzzzz

Wie funktioniert das? Da NF für "Anzahl der Felder" steht, haben diese leeren Zeilen 0 Felder, so dass awk 0 zu Falsch auswertet und keine Zeile gedruckt wird; Wenn jedoch mindestens ein Feld vorhanden ist, ist die Auswertung True und macht awk seine Standardaktion ausführen: die aktuelle Zeile drucken.

95voto

84voto

Alberto Zaccagni Punkte 29518

sed '/^$/d' sollte in Ordnung sein, erwarten Sie, dass die Datei direkt geändert wird? Wenn ja, sollten Sie das -i Flag verwenden.

Vielleicht sind diese Zeilen nicht leer, also wenn das der Fall ist, schauen Sie sich diese Frage an Leere Zeilen aus txt-Dateien entfernen, Leerzeichen am Anfang und Ende der Zeile entfernen Ich glaube, das ist was Sie erreichen möchten.

43voto

Vadim Punkte 769

Ich glaube, dass dies das einfachste und schnellste ist:

cat datei.txt | grep .

Wenn Sie auch alle Leerzeilen ignorieren müssen, dann versuchen Sie es damit:

cat datei.txt | grep '\S'

Beispiel:

s="\
\
a\
 b\
\
Below is TAB:\
    \
Below is space:\
 \
c\
\
"; echo "$s" | grep . | wc -l; echo "$s" | grep '\S' | wc -l

ergibt

7
5

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X