6

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

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

sed '/^$/d' filename

可以使用 grep 完成吗?

4

4 回答 4

14

用于\s*仅包含空格的空行:

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

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

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

编辑:

正则表达式^\s*$匹配仅包含空格的行,grep -v打印与给定模式不匹配的行,因此以下将打印所有非黑色行:

 grep -v '^\s*$' file
于 2012-12-20T10:48:41.720 回答
1
sed -i '/^[ \t]*$/d' file-name

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

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

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

于 2014-03-20T09:36:48.870 回答
1

POSIX 可移植的方法是

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

或者

grep -v '^[[:blank:]]*$' file
于 2014-03-20T09:51:51.517 回答
0

碰巧该文件是从 Windows 机器复制的 sed 命令 (sed '/^$/d' foo ) 没有正确运行。

我运行了以下命令并且它起作用了。

$ dos2unix 富

于 2014-03-03T06:40:51.860 回答