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?
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?
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.)
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.
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.
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 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.