it-swarm.com.de

Entfernen Sie leere Zeilen in einer Textdatei über grep

FILE:

hello

world

foo

bar

Wie kann ich alle leeren neuen Zeilen in dieser FILE entfernen?

Ausgabe des Befehls:

FILE:

hello
world
foo
bar
67
user191960

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)

105
DigitalRoss

Versuche Folgendes:

grep -v -e '^$'
26
Mr.Ree
with awk, just check for number of fields. no need regex

$ more file
hello

world

foo

bar

$ awk 'NF' file
hello
world
foo
bar
10
ghostdog74

Hier ist eine Lösung, die alle Zeilen entfernt, die entweder leer sind oder nur Leerzeichen enthalten:

grep -v '^[[:space:]]*$' foo.txt
5
Marco Coutinho

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.

2

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
1
clblue2000

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:

0
kenorb

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
0
Chris Koknat

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
0
kenorb