93

FILE

hello

world

foo

bar

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

命令输出:

FILE

hello
world
foo
bar
4

11 回答 11

145

grep . FILE


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

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

于 2009-10-23T07:08:10.750 回答
40

尝试以下操作:

grep -v -e '^$'
于 2009-10-23T08:43:25.847 回答
11
with awk, just check for number of fields. no need regex

$ more file
hello

world

foo

bar

$ awk 'NF' file
hello
world
foo
bar
于 2009-10-23T10:24:06.363 回答
9

这是一个删除所有空白或仅包含空格字符的行的解决方案:

grep -v '^[[:space:]]*$' foo.txt
于 2016-03-11T12:19:40.907 回答
3

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

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

也可以看看:

于 2019-07-22T09:18:47.120 回答
2

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

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

注意:方括号内有一个“空格”,后跟“\t”。

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

于 2014-03-20T14:00:09.443 回答
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
于 2013-03-10T06:43:09.850 回答
1

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

[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 ~]#
于 2020-10-09T04:55:42.480 回答
0

尝试方式:

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
于 2015-05-05T16:10:01.333 回答
0

Perl 可能有点矫枉过正,但它也同样有效。

删除所有完全空白的行:

perl -ne 'print if /./' file

删除所有完全空白或仅包含空格的行:

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

编辑原始文件并制作 .bak 文件的变体:

perl -i.bak -ne 'print if ! /^\s*$/' file
于 2015-09-10T18:15:10.297 回答
0

如果您想知道 Xcode 项目中的总代码行数,并且您对列出每个 swift 文件的计数不感兴趣,那么这将为您提供答案。它删除根本没有代码的行并删除以注释为前缀的行//

在 Xcode 项目的根级别运行它。

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

如果您的代码中有以以下开头/*和结尾的注释块*/

/*
 This is an comment block 
*/

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

于 2020-08-22T08:03:43.477 回答