从文件中删除空行

时间:2012-12-20 10:47:37

标签: unix sed grep

我需要从文件中删除空行(仅限空格 - 不是空记录)。

以下命令仅适用于空行,但不适用于空行 位:

sed '/^$/d' filename

可以使用grep吗?

4 个答案:

答案 0 :(得分:13)

对仅包含空格的空白行使用\s*

 sed '/^\s*$/d' file 

要将更改保存回文件,请使用-i选项:

sed -i '/^\s*$/d' file 

编辑:

正则表达式^\s*$匹配仅包含空格的行,grep -v不匹配给定模式的{1}}打印行,以便以下内容将打印所有无黑线:

 grep -v '^\s*$' file

答案 1 :(得分:1)

sed -i '/^[ \t]*$/d' file-name

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

NOte:有一个'空间'其次是' \ t'在方括号内......

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

答案 2 :(得分:1)

POSIX便携式方法是

sed -i '/^[[:blank:]]*$/d' file

grep -v '^[[:blank:]]*$' file

答案 3 :(得分:0)

发生该文件是从Windows机器上复制的sed命令(sed'/ ^ $ / d'foo)未正确运行。

我按照以下命令运行。

$ dos2unix foo