曲径通幽论坛

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

将前一行内容添加到下一行内容的后边

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2012-2-4 10:25:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面例子演示了将前一行添加到下一行的后边。测试文本如下:
[beyes@beyes   sed]$ cat tmp.txt
#website
        groad.net
        baidu.com
        sina.com

#system
        linux
        unix
        windows

#Windows
        win7
        winXP
        winMe
运行输出:
[beyes@beyes   sed]$ sed 'H;x;s/^\(.*\)\n\(.*\)/\2\1/' tmp.txt
#website
        groad.net#website
        baidu.com       groad.net
        sina.com        baidu.com
        sina.com
#system
        linux#system
        unix    linux
        windows unix
        windows
#Windows
        win7#Windows
        winXP   win7
        winMe   winXP
说明:
首先第 1 行内容会被读到 pattern space 中,然后用 H 命令将该行内容追加到 hold space 中,此时 hold space 中的内容为:"(空行)\n#website" ,注意 pattern space 中内容不会被移除!接着,x 命令将 pattern space 和 hold space 进行互换,结果是 hold space 中存放了第 1 行内容,即 #website ,对于 x 命令后面的正则表达式,因为不匹配 pattern space 中的内容,故而不产生什么作用。在第 2 次处理循环中,同样,先读入第 2 行内容到 pattern space,然后将其追加到 hold space 中,结果 hold space 中的内容变为:"#website\ngroad.net" ,当再用 x 将该内容交换到 pattern space 中时,正则表达式发生匹配,该正则表达式的结果是将第 1 行和第 2 行的前后位置进行互换,其中 \2 和 \1 分别指代第一个括号正则和第二个括号正则。此后的文本处理,就按照上述的过程进行,最后的结果就如上面输出所呈现。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-16 10:59 , Processed in 0.070721 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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