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

sed '/^$/d'

但我运气不佳。

例如,我有这样几行:

xxxxxx


yyyyyy


zzzzzz

我希望它是这样的:

xxxxxx
yyyyyy
zzzzzz

这个的代码应该是什么?


当前回答

sed

' / ^[[:空间:]]*美元/ d ' ' / ^ \ s *美元/ d ' ' / ^ $ / d ' - n ' / ^ \ s *美元/ !p '

grep

. - v“^ $” - v ' ^ \ s * $ ' - v " ^[[:空间:]]*美元”

awk

/。/ “NF” “长度” '/^[\t]*$/ {next;} {print}' ”!/ ^ \ [t] * $ / '

其他回答

使用vim编辑器删除空行

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

我错过了awk的解决方案:

awk 'NF' file

这将返回:

xxxxxx
yyyyyy
zzzzzz

这是如何工作的呢?因为NF代表“字段的数量”,那些为空的行有0个字段,因此awk的计算结果为0到False,并且不打印任何行;但是,如果至少有一个字段,则求值为True,并使awk执行默认操作:打印当前行。

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

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

另一个没有sed, awk, perl等的选项

strings $file > $output

字符串-打印文件中可打印字符的字符串。

您正在尝试的命令是正确的,只需使用-E标志。

sed -E '/^$/d'

-E标志使sed捕获扩展正则表达式。更多信息请点击这里