FILE
:
hello
world
foo
bar
Wie kann ich alle leeren neuen Zeilen in dieser FILE
entfernen?
Ausgabe des Befehls:
FILE
:
hello
world
foo
bar
grep . FILE
(Und wenn Sie es wirklich in sed tun wollen, dann: sed -e /^$/d FILE
)
(Und wenn Sie es wirklich in awk tun wollen, dann: awk /./ FILE
)
Versuche Folgendes:
grep -v -e '^$'
with awk, just check for number of fields. no need regex
$ more file
hello
world
foo
bar
$ awk 'NF' file
hello
world
foo
bar
Hier ist eine Lösung, die alle Zeilen entfernt, die entweder leer sind oder nur Leerzeichen enthalten:
grep -v '^[[:space:]]*$' foo.txt
Versuchen Sie folgendes: sed -i '/^[ \t]*$/d' file-name
Es werden alle leeren Zeilen mit einer beliebigen Nummer gelöscht. von Leerzeichen (Leerzeichen oder Tabulatoren), d. h. (0 oder mehr) in der Datei.
Hinweis: In der eckigen Klammer ist ein Leerzeichen gefolgt von '\ t'.
Der Modifikator -i
zwingt den aktualisierten Inhalt zurück in die Datei. Ohne dieses Flag können Sie sehen, dass die leeren Zeilen auf dem Bildschirm gelöscht wurden. Die tatsächliche Datei wird jedoch nicht beeinflusst.
grep '^..' my_file
beispiel
THIS
IS
THE
FILE
EOF_MYFILE
es werden nur Zeilen mit mindestens 2 Zeichen ausgegeben.
THIS
IS
THE
FILE
EOF_MYFILE
Siehe auch die Ergebnisse mit grep '^' my_file
-Ausgaben
THIS
IS
THE
FILE
EOF_MYFILE
und auch mit grep '^.' my_file
ausgaben
THIS
IS
THE
FILE
EOF_MYFILE
Wenn das Entfernen von Leerzeilen Zeilen mit Leerzeichen bedeutet, verwenden Sie:
grep '\S' FILE
Zum Beispiel:
$ printf "line1\n\nline2\n \nline3\n\t\nline4\n" > FILE
$ cat -v FILE
line1
line2
line3
line4
$ grep '\S' FILE
line1
line2
line3
line4
$ grep . FILE
line1
line2
line3
line4
Siehe auch:
Perl ist vielleicht übertrieben, funktioniert aber genauso gut.
Entfernt alle Zeilen, die vollständig leer sind:
Perl -ne 'print if /./' file
Entfernt alle Zeilen, die vollständig leer sind oder nur Leerzeichen enthalten:
Perl -ne 'print if ! /^\s*$/' file
Variation, die das Original bearbeitet und eine .bak-Datei erstellt:
Perl -i.bak -ne 'print if ! /^\s*$/' file
Versuchen Sie ex - way:
ex -s +'v/\S/d' -cwq test.txt
Für mehrere Dateien (direkt bearbeiten):
ex -s +'bufdo!v/\S/d' -cxa *.txt
Ohne die Datei zu ändern (einfach auf der Standardausgabe drucken):
cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin