我需要从文件中删除空行(仅包含空格 - 不是空记录)。
以下命令仅适用于空行,但不适用于 空格:
sed '/^$/d' filename
可以使用grep来完成吗?
对仅包含空格的空白行使用
\s*
:
sed '/^\s*$/d' file
要将更改保存回文件,请使用
-i
选项:
sed -i '/^\s*$/d' file
编辑:
正则表达式
^\s*$
匹配仅包含空格的行,grep -v
打印与给定模式不匹配的行,因此以下将打印所有非黑色行:
grep -v '^\s*$' file
执行此操作的 POSIX 可移植方法是
sed -i '/^[[:blank:]]*$/d' file
或
grep -v '^[[:blank:]]*$' file
sed -i '/^[ \t]*$/d' file-name
它将删除所有没有任何编号的空白行。文件中的空白(空格或制表符),即(0 个或更多)..
注意:方括号内有一个“空格”,后跟“”...
“
-i
”将强制将更新的内容写回到文件中...如果没有此标志,您可以看到屏幕上的空行被删除,但实际文件不会受到影响。
碰巧该文件是从 Windows 机器复制的,sed 命令(sed '/^$/d' foo )未正确运行。
我运行了以下命令并且成功了。
$ dos2unix foo