我正在尝试使用sed删除空行:

sed '/^$/d'

但我运气不佳。

例如,我有这样几行:

xxxxxx


yyyyyy


zzzzzz

我希望它是这样的:

xxxxxx
yyyyyy
zzzzzz

这个的代码应该是什么?


当前回答

我的bash特定的答案是建议使用perl替换操作符与全局模式g标志,如下所示:

$ perl -pe s'/^\n|^[\ ]*\n//g' $file
xxxxxx
yyyyyy
zzzzzz

这个答案说明了计算空行中是否有空格([\]*),以及使用|分隔多个搜索词/字段。在macOS High Sierra和CentOS 6/7上测试。

仅供参考,OP的原始代码sed '/^$/d' $文件在高性能超级计算集群的macOS High Sierra和CentOS 6/7 Linux的bash Terminal中正常工作。

其他回答

Sed '/^$/d'应该是好的,你期望修改文件到位吗?如果是这样,您应该使用-i标志。

也许这些行不是空的,如果是这样的话,看看这个问题从txtfiles中删除空行,从行开始和行结束删除空格,我相信这就是你想要达到的目的。

我的bash特定的答案是建议使用perl替换操作符与全局模式g标志,如下所示:

$ perl -pe s'/^\n|^[\ ]*\n//g' $file
xxxxxx
yyyyyy
zzzzzz

这个答案说明了计算空行中是否有空格([\]*),以及使用|分隔多个搜索词/字段。在macOS High Sierra和CentOS 6/7上测试。

仅供参考,OP的原始代码sed '/^$/d' $文件在高性能超级计算集群的macOS High Sierra和CentOS 6/7 Linux的bash Terminal中正常工作。

这也适用于awk。

awk '!/^$/' file
xxxxxx
yyyyyy
zzzzzz

使用vim编辑器删除空行

美元:% s / ^ \ n / / g

NF是awk的命令,可用于删除文件中的空行 awk NF文件名 通过使用sed Sed -r "/^\r?美元/ d”