从文件中删除空行

问题描述 投票:0回答:4

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

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

sed '/^$/d' filename

可以使用grep来完成吗?

unix sed grep
4个回答
18
投票

对仅包含空格的空白行使用

\s*

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

要将更改保存回文件,请使用

-i
选项:

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

编辑:

正则表达式

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

 grep -v '^\s*$' file

4
投票

执行此操作的 POSIX 可移植方法是

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

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

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

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

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

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


0
投票

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

我运行了以下命令并且成功了。

$ dos2unix foo
© www.soinside.com 2019 - 2024. All rights reserved.