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

use*_*960 72 linux grep text-processing

FILE:

hello

world

foo

bar
Run Code Online (Sandbox Code Playgroud)

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

输出命令:

FILE:

hello
world
foo
bar
Run Code Online (Sandbox Code Playgroud)

Dig*_*oss 115

grep . FILE


(如果你真的想这样做的SED,则:sed -e /^$/d FILE)

(如果你真的想这样做的AWK,然后:awk /./ FILE)

  • `sed -ne /./ p`也可以,'awk /./`更短(如果没有指定,则动作为`{print }`).@ ghostdog74:`grep'[^ [:space:]]'`然后. (5认同)
  • 对于那些不理解的人,`.`是一个正则表达式,匹配除换行符之外的任何字符. (3认同)
  • `grep.FILE`与给定的示例一起使用,但不一定当文件的字节不是charset的一部分时.例如,使用GNU grep 2.20,`printf"\ x80 \n"| grep .`什么也没输出. (3认同)

Mr.*_*Ree 30

请尝试以下方法:

grep -v -e '^$'
Run Code Online (Sandbox Code Playgroud)

  • 这种方法允许我比"grep.FILE"更容易组合多个排除.例如,我正在查看conf文件,并希望排除所有注释行和所有空行.所以我使用了"grep -v -e'#' - ''^''squid.conf".做了一个享受. (2认同)
  • 这个比'grep快得多.文件'.这是由于验证正则表达式的更复杂的任务.^ $不匹配时排除. (2认同)
  • `grep -v -e'^''`总是有效,这不是`grep .`的情况.例如,使用GNU grep 2.20,`printf"\ x80 \n"| grep .`没有输出,而`printf"\ x80 \n"| grep -v'^ $'`输出非空行. (2认同)

gho*_*g74 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
Run Code Online (Sandbox Code Playgroud)

  • 它只是我的优秀做法,因为你是从shell运行它...对于复合awk语句,你仍然需要输入引号.所以为什么不培养这种习惯. (2认同)

小智 5

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

grep -v '^[[:space:]]*$' foo.txt
Run Code Online (Sandbox Code Playgroud)


ken*_*orb 5

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

grep '\S' FILE
Run Code Online (Sandbox Code Playgroud)

例如:

$  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
Run Code Online (Sandbox Code Playgroud)

也可以看看: