FILE
::
hello
world
foo
bar
Wie kann ich alle leeren neuen Zeilen darin entfernen FILE
?
Befehlsausgabe:
FILE
::
hello
world
foo
bar
FILE
::
hello
world
foo
bar
Wie kann ich alle leeren neuen Zeilen darin entfernen FILE
?
Befehlsausgabe:
FILE
::
hello
world
foo
bar
Antworten:
grep . FILE
(Und wenn Sie es wirklich in sed machen wollen, dann: sed -e /^$/d FILE
)
(Und wenn Sie es wirklich in awk tun wollen, dann: awk /./ FILE
)
sed -ne/./p
funktioniert auch und awk /./
ist kürzer (Aktion ist, {print}
wenn nicht angegeben). @ Ghostdog74: grep '[^[:space:]]'
dann.
.
ist der ein regulärer Ausdruck, der mit jedem Zeichen außer Newline übereinstimmt.
grep . FILE
funktioniert mit dem angegebenen Beispiel, aber nicht unbedingt, wenn die Datei Bytes enthalten kann, die nicht Teil des Zeichensatzes sind. Zum Beispiel gibt mit GNU grep 2.20 printf "\x80\n" | grep .
nichts aus.
Versuche Folgendes:
grep -v -e '^$'
grep -v -e '^$'
funktioniert immer, was bei nicht der Fall ist grep .
. Beispielsweise gibt mit GNU grep 2.20 printf "\x80\n" | grep .
nichts aus, während printf "\x80\n" | grep -v '^$'
die nicht leere Zeile ausgegeben wird.
with awk, just check for number of fields. no need regex
$ more file
hello
world
foo
bar
$ awk 'NF' file
hello
world
foo
bar
awk1line.txt
- aber auch die meisten
Hier ist eine Lösung, die alle Zeilen entfernt, die entweder leer sind oder nur Leerzeichen enthalten:
grep -v '^[[:space:]]*$' foo.txt
Versuche dies: sed -i '/^[ \t]*$/d' file-name
Es werden alle Leerzeilen mit der Nr. Löscht. von Leerzeichen (Leerzeichen oder Tabulatoren), dh (0 oder mehr) in der Datei.
Hinweis: In der eckigen Klammer befindet sich ein Leerzeichen gefolgt von '\ t'.
Der Modifikator -i
erzwingt das Zurückschreiben des aktualisierten Inhalts in die Datei. Ohne dieses Flag können Sie sehen, dass die leeren Zeilen auf dem Bildschirm gelöscht wurden, die eigentliche Datei jedoch nicht betroffen ist.
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
Ausgängen
THIS
IS
THE
FILE
EOF_MYFILE
und auch mit grep '^.' my_file
Ausgängen
THIS
IS
THE
FILE
EOF_MYFILE
Wenn das Entfernen leerer Zeilen 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 mag übertrieben sein, aber es funktioniert 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
Wenn Sie wissen möchten, wie viele Codezeilen in Ihrem Xcode-Projekt insgesamt enthalten sind und Sie nicht daran interessiert sind, die Anzahl für jede schnelle Datei aufzulisten, erhalten Sie die Antwort. Es werden Zeilen ohne Code entfernt und Zeilen, denen der Kommentar vorangestellt ist//
Führen Sie es auf der Stammebene Ihres Xcode-Projekts aus.
find . \( -iname \*.swift \) -exec grep -v '^[[:space:]]*$' \+ | grep -v -e '//' | wc -l
Wenn Sie Codeblöcke in Ihrem Code haben, die mit /*
und enden mit */
:
/*
This is an comment block
*/
dann werden diese in die Zählung einbezogen. (Zu schwer).
Einfachste Antwort -------------------------------------
[root@node1 ~]# cat /etc/sudoers | grep -v -e ^# -e ^$
Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
[root@node1 ~]#