免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: tank064
打印 上一主题 下一主题

[文本处理] sed实现交换文件内容的奇偶行位置. [复制链接]

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
11 [报告]
发表于 2013-07-17 17:17 |只看该作者
回复 10# tank064


    你预期的是怎样的?

论坛徽章:
1
2015亚冠之西悉尼流浪者
日期:2015-05-28 16:30:37
12 [报告]
发表于 2013-07-17 17:23 |只看该作者
本帖最后由 tank064 于 2013-07-17 17:25 编辑

回复 11# WilliBhamlll
单就上面的 {h;d;g} 读入第一行h过后, hold space中就有第一行的内容了, d删除当前模式空间内容,g再把hold space中的内容copy到模式空间之中,因为没有加 -n选项,应该是是会输出每一行才对.

可sedsed一看,命令组里到了d命令时,就读入下一行,从头开始执行了.


   

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
13 [报告]
发表于 2013-07-17 17:29 |只看该作者
回复 12# tank064


    pattern space里的内容被删除了,g命令没有执行。你看看之前你贴的sedsed的结果。

论坛徽章:
1
2015亚冠之西悉尼流浪者
日期:2015-05-28 16:30:37
14 [报告]
发表于 2013-07-17 17:36 |只看该作者
本帖最后由 tank064 于 2013-07-17 17:37 编辑

回复 13# WilliBhamlll

嗯是的,d命令过后,pattern space中就是空的了,

模式空间一旦为空,sed就会从输入读取下一行到模式空间之中,确保模式空间不为空,直到文件尾部为止.  这样d命令后的其他命令就相当被遗弃了么? 是这样么?

   

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
15 [报告]
发表于 2013-07-17 17:41 |只看该作者
回复 14# tank064

以你举的例子来说,是这样的。
   

论坛徽章:
1
2015亚冠之西悉尼流浪者
日期:2015-05-28 16:30:37
16 [报告]
发表于 2013-07-17 17:45 |只看该作者
本帖最后由 tank064 于 2013-07-17 17:47 编辑

回复 15# WilliBhamlll
谢谢指点了啊,衷心感谢!! 我自己在捣腾捣腾,哈哈!!

从您的头像来看,您是指环王的fans 还是奥兰多 的fans呢?

   

论坛徽章:
1
2015亚冠之西悉尼流浪者
日期:2015-05-28 16:30:37
17 [报告]
发表于 2013-07-17 18:32 |只看该作者
  1.        d      Delete pattern space.  Start next cycle.

  2.        D      Delete  up to the first embedded newline in the pattern space.  Start next
  3.               cycle, but skip reading from the input if there is still data in the  pat‐
  4.               tern space.
复制代码
呵呵,以前看书不仔细啊, d 和 D 删除后,还有其他动作的

论坛徽章:
0
18 [报告]
发表于 2013-07-18 10:22 |只看该作者
  1. sed -n '{$p;h;n;G;p}' data
复制代码

论坛徽章:
0
19 [报告]
发表于 2013-07-19 16:12 |只看该作者
@tank064
sed -re '{N;s/(.*)\n(.*)\n/\2 \1/;p;d;}'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP