Sie können Leerzeichen oder Tabulatoren 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 NICHT tut PCRE unterstützen.)
Mir fehlt die awk
Lösung:
awk 'NF' file
Was zurückgeben würde:
xxxxxx
yyyyyy
zzzzzz
Wie funktioniert das? Seit NF
steht für "number of fields", die Zeilen, die leer sind, haben 0 Felder, so dass awk 0 als False auswertet und keine Zeile gedruckt wird; wenn jedoch mindestens ein Feld vorhanden ist, ist die Auswertung wahr und ergibt awk
seine Standardaktion ausführen:die aktuelle Zeile drucken.
gesendet
'/^[[:space:]]*$/d'
'/^\s*$/d'
'/^$/d'
-n '/^\s*$/!p'
grep
.
-v '^$'
-v '^\s*$'
-v '^[[:space:]]*$'
awk
/./
'NF'
'length'
'/^[ \t]*$/ {next;} {print}'
'!/^[ \t]*$/'
sed '/^$/d'
sollte in Ordnung sein, erwarten Sie, die Datei an Ort und Stelle zu ändern? Dann sollten Sie den -i
verwenden Flagge.
Vielleicht sind diese Zeilen nicht leer, wenn das der Fall ist, sehen Sie sich diese Frage an. Entfernen Sie leere Zeilen aus TXT-Dateien, entfernen Sie Leerzeichen am Zeilenanfang und -ende. Ich glaube, das ist es, was Sie erreichen wollen.