通过grep删除文本文件中的空行

时间:2009-10-23 07:06:09

标签: linux grep text-processing

FILE

hello

world

foo

bar

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

输出命令:

FILE

hello
world
foo
bar

10 个答案:

答案 0 :(得分:110)

grep . FILE


(如果你真的想在sed中这样做,那么:sed -e /^$/d FILE

(如果你真的想用awk做,那么:awk /./ FILE

答案 1 :(得分:29)

尝试以下方法:

grep -v -e '^$'

答案 2 :(得分:10)

with awk, just check for number of fields. no need regex

$ more file
hello

world

foo

bar

$ awk 'NF' file
hello
world
foo
bar

答案 3 :(得分:5)

以下解决方案可删除所有空行或仅包含空格字符的行:

hrtimer

答案 4 :(得分:2)

试试这个:sed -i '/^[ \t]*$/d' file-name

它将删除所有没有的空白行。白色空格(空格或制表符),即文件中的(0或更多)。

注意:方括号内有'空格'后跟'\ t'。

修饰符-i将强制将更新的内容写回文件中。如果没有此标志,您可以在屏幕上看到空行被删除,但实际文件不会受到影响。

答案 5 :(得分:1)

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输出

THIS
IS
THE
FILE
EOF_MYFILE

答案 6 :(得分:0)

尝试ex - 方式:

numeric_limits

对于多个文件(就地编辑):

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

不修改文件(只在标准输出上打印):

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

答案 7 :(得分:0)

如果删除空行意味着行中包含任何空格,请使用:

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

另请参阅:

答案 8 :(得分:0)

如果您想知道Xcode项目中的总代码行,而又不想列出每个swift文件的计数,那么这将为您提供答案。它删除完全没有代码的行,并删除以注释//

为前缀的行

在Xcode项目的根目录下运行它。

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

如果您的代码中有以/*开头并以*/结尾的注释块,例如:

/*
 This is an comment block 
*/

然后这些将包括在计数中。 (太难了。)

答案 9 :(得分:0)

最简单的答案-----------------------------------------

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