簡體   English   中英

通過 grep 刪除文本文件中的空行

[英]Remove empty lines in a text file via grep

FILE

hello

world

foo

bar

如何刪除此FILE中的所有空新行?

命令的輸出:

FILE

hello
world
foo
bar

grep . FILE


(如果您真的想在 sed 中執行此操作,則: sed -e /^$/d FILE

(如果您真的想在 awk 中執行此操作,則: awk /./ FILE

請嘗試以下操作:

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

這是一個刪除所有空白或僅包含空格字符的行的解決方案:

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

如果刪除空行意味着行包含任何空格,請使用:

grep '\S' FILE

例如:

$  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

也可以看看:

試試這個: sed -i '/^[ \\t]*$/d' file-name

它將刪除所有沒有任何空行。 文件中的空格(空格或制表符),即(0 個或更多)。

注意:方括號內有一個“空格”后跟“\\t”。

修飾符-i將強制將更新的內容寫回到文件中。 如果沒有這個標志,您可以看到屏幕上的空行被刪除,但實際文件不會受到影響。

grep '^..' my_file

例子

THIS

IS

THE

FILE

EOF_MYFILE

它只提供至少有 2 個字符的行作為輸出。

THIS
IS
THE
FILE
EOF_MYFILE

另請參閱grep '^' my_file輸出的結果

THIS

IS

THE

FILE

EOF_MYFILE

還有grep '^.' my_file grep '^.' my_file輸出

THIS
IS
THE
FILE
EOF_MYFILE

嘗試前方式

ex -s +'v/\S/d' -cwq test.txt

對於多個文件(就地編輯):

ex -s +'bufdo!v/\S/d' -cxa *.txt

不修改文件(只需在標准輸出上打印):

cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin

Perl 可能有點矯枉過正,但它也能正常工作。

刪除所有完全空白的行:

perl -ne 'print if /./' file

刪除所有完全空白或僅包含空格的行:

perl -ne 'print if ! /^\s*$/' file

編輯原始文件並制作 .bak 文件的變體:

perl -i.bak -ne 'print if ! /^\s*$/' file

如果您想知道 Xcode 項目中的總代碼行數,並且您對列出每個 swift 文件的計數不感興趣,那么這將為您提供答案。 它刪除根本沒有代碼的行並刪除以注釋為前綴的行//

在 Xcode 項目的根級別運行它。

find . \( -iname \*.swift \) -exec grep -v '^[[:space:]]*$' \+ | grep -v -e '//' | wc -l

如果您的代碼中有以/*開頭並以*/結尾的注釋塊,例如:

/*
 This is an comment block 
*/

那么這些將被包括在計數中。 (太難)。

最簡單的答案 -----------------------------------------

[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 ~]#

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM