曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3182|回复: 0
打印 上一主题 下一主题

删除掉一个段落中的最后一行

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2012-2-3 12:58:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
测试文本内容为:
[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 中所存的该段落的最后一行互换,接着该行被删除,然后重新启动新一轮处理循环。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-15 13:15 , Processed in 0.058642 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表