删除结尾的空行

删除结尾的空行

Content #

就跟打印数据流的结尾一样,删除数据流结尾的空行也得花点儿心思:利用循环来实现。

sed '{
:start
/^\n*$/{$d; N; b start }
}'

乍一看可能有点儿怪,在正常的脚本花括号内还有花括号。但这可以在整个命令脚本中将部分命令分组。命令分组会被应用于指定的地址模式。该地址模式能够匹配只含一个换行符的行。如果找到了这样的行,而且还是最后一行,删除命令就会将它删除。如果不是最后一行,那么N命令会将下一行附加到它后面,然后分支命令会跳到循环起始位置重新开始。

下面是脚本的实际运行效果:

$ cat data10.txt
Line one.
Line two.



$
$ sed '{
> :start
> /^\n*$/{$d; N; b start}
> }' data10.txt
Line one.
Line two.
$

From #

Linux命令行与shell脚本编程大全