曲径通幽论坛

标题: 删除掉一个段落中的最后一行 [打印本页]

作者: beyes    时间: 2012-2-3 12:58
标题: 删除掉一个段落中的最后一行
测试文本内容为:
[root@qunet sed]# cat tmp.txt
#website
        groad.net
        baidu.com
        sina.com

#welcom
        hainan
        beijing
        jiangsu

#system
        unix
        linux
        windows
注意,上面的文本中,每个段落都由一个空行隔开。

下面命令将删除掉每个段落中的最后一行,比如会分别删除掉 sina.com ,jiangsu,windows 这 3 行,命令运行如下:
[root@qunet sed]# sed -n -e '/^$/{x;d}' -e '/./x;p' tmp.txt

#website
        groad.net
        baidu.com

#welcom
        hainan
        beijing

#system
        unix
        linux
如果不是空行,那么就交换 pattern space 和 holdspace,然后打印出 pattern space 中的内容,正是因为如此,在输出结果中才会看到第一行的输出是一个空白行。

假如是空行,那么也就意味着一个段落的结束,该空行会先被读到 pattern space 中,然后与 hold space 中所存的该段落的最后一行互换,接着该行被删除,然后重新启动新一轮处理循环。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2