【发布时间】:2012-12-07 20:53:06
【问题描述】:
我需要从文件中删除空行(只有空格 - 不是空记录)。
以下命令仅适用于空行,但不适用于 空格:
sed '/^$/d' filename
可以用 grep 完成吗?
【问题讨论】:
我需要从文件中删除空行(只有空格 - 不是空记录)。
以下命令仅适用于空行,但不适用于 空格:
sed '/^$/d' filename
可以用 grep 完成吗?
【问题讨论】:
将\s* 用于仅包含空格的空行:
sed '/^\s*$/d' file
要将更改保存回文件,请使用-i 选项:
sed -i '/^\s*$/d' file
编辑:
正则表达式 ^\s*$ 匹配仅包含空格的行,grep -v 打印与给定模式不匹配的行,因此以下将打印所有非黑色行:
grep -v '^\s*$' file
【讨论】:
grep . file。
awk 'NF' file
\s 在许多 Unix 机器上都会失败(它可能是 GNUism 或 perlism)。相反,应该使用 POSIX 类 [:blank:] 或 [:space:]。
POSIX 可移植的方式是
sed -i '/^[[:blank:]]*$/d' file
或
grep -v '^[[:blank:]]*$' file
【讨论】:
sed -i '/^[ \t]*$/d' file-name
它将删除所有没有任何编号的空白行。空白(空格或制表符),即文件中的(0个或更多)..
注意:方括号内有一个“空格”后跟“\t”...
"-i" 将强制将更新后的内容写回文件中...如果没有此标志,您可以看到屏幕上的空行已被删除,但实际文件不会受到影响。
【讨论】:
文件是从 Windows 机器复制的,而 sed 命令 (sed '/^$/d' foo ) 运行不正确。
我运行了以下命令,它工作了。
$ dos2unix foo
【讨论】: