我需要从文件中删除空行(仅限空格 - 不是空记录)。
以下命令仅适用于空行,但不适用于空行 位:
sed '/^$/d' filename
可以使用grep吗?
答案 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