GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Löschen Sie leere Zeilen mit sed

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.


Linux
  1. Mehrzeiliger Musterabgleich mit Sed, Awk oder Grep?

  2. Ersetzen Sie ein Wort oder eine Zahl in einem Satz, der kleiner als 8 ist, mit Awk oder Sed?

  3. Wie lösche ich mehrere zufällige Zeilen aus einer Textdatei mit Sed?

  4. Zeilenumbruch mit Mc verwenden?

  5. Wie lösche ich die ersten N Zeilen einer ASCII-Datei mit Shell-Befehlen?

So löschen Sie Zeilen in Vim / Vi

So entfernen Sie Zeilen aus einer Datei mit dem Sed-Befehl

So löschen Sie leere Zeilen in Dateien mit Grep, Sed und Awk

Unix Sed Tutorial:Löschen Sie Dateizeilen mit Adresse und Mustern

Verwenden von grep vs. awk

Wie ändere ich eine Datei direkt mit awk? (wie bei sed -i)