免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: sabin541

sed如何实现两行的位置交换 [复制链接]

论坛徽章:
0
发表于 2008-11-11 10:24 |显示全部楼层
awk 'NR==FNR{if(/music/) p=$0; else if(/realist/) g=$0}NR!=FNR{if(/music/) print g; else if(/realist/) print p; else print}' urfile urfile

论坛徽章:
0
发表于 2008-11-11 22:15 |显示全部楼层
根据8楼的脚本,改了个通用的,适用多对及不完整对.一行中只认第一次出现的关键字.
bash-3.2$ echo "1jkjkjkj
> music 2
> jkjkjkjk 3
> realist 4
> 5444444444lklkl
> realist 6
> 766666666666666
> music 8
> 977777777777777777
> music 10
> realist11
> 12888888888
> 13music
> 14aaaaaaaaaaaa
> "|sed -nr ':s /music/{h;n;ba;};/realist/{h;n;bb;};p;d;Q;
> :a /realist/{p;g;s/([^\n]*)\n(.*)/\2\n\1/;p;n;bs;};H;$be;n;ba;
> :b /music/{p;g;s/([^\n]*)\n(.*)/\2\n\1/;p;n;bs;};H;$be;n;bb;
> :e x;p;'
1jkjkjkj
realist 4
jkjkjkjk 3
music 2
5444444444lklkl
music 8
766666666666666
realist 6
977777777777777777
realist11
music 10
12888888888
13music
14aaaaaaaaaaaa
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP