免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5080 | 回复: 15
打印 上一主题 下一主题

sed -ne '4!{p;d};4!{h;n;:1;4!{N;b1};G};h;n;p;g;p' [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-13 16:24 |只看该作者 |倒序浏览
sed -ne '4!{p;d};4!{h;n;:1;4!{N;b1};G};h;n;p;g;p'
谁能帮忙具体解释下,不是很明白!THX!

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2008-04-13 16:29 |只看该作者
4!{h;n;:1;4!{N;b1};G};
这些是装饰吧?

论坛徽章:
0
3 [报告]
发表于 2008-04-13 16:35 |只看该作者

回复 #2 waker 的帖子

请问要实现任意两行的互换该怎么写(sed) 要考虑到相邻两行也能互换
THX!

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
4 [报告]
发表于 2008-04-13 16:54 |只看该作者

回复 #3 javierchen 的帖子

如果你分开几步走,就不用死钻了
1.打印A以前的部分
2.打印B
3.打印AB之间的部分
4.打印A
5.打印B以后的部分

论坛徽章:
0
5 [报告]
发表于 2008-04-13 17:36 |只看该作者
一点不懂

论坛徽章:
0
6 [报告]
发表于 2008-04-13 19:33 |只看该作者

  1. sed -n 'A{h;n;B!{:a;N;C!ba;x;H;n};x;H;x};p' 文件
复制代码


任意两行互换,其中 A  B 为需要互换的两行的行号,C为B-1

论坛徽章:
0
7 [报告]
发表于 2008-04-13 20:23 |只看该作者

回复 #6 springwind426 的帖子

看到了你在linuxsir里的详细解释,thx

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
8 [报告]
发表于 2008-04-14 00:02 |只看该作者
原帖由 javierchen 于 2008-4-13 16:35 发表
请问要实现任意两行的互换该怎么写(sed) 要考虑到相邻两行也能互换
THX!

第一,sed可以办到
第二,比较麻烦,建议用awk,没必要钻牛角尖。

论坛徽章:
0
9 [报告]
发表于 2008-04-14 01:39 |只看该作者

回复 #3 javierchen 的帖子


  1. sed -n '1{
  2.             h
  3.             d
  4.           }
  5.            12{
  6.              G
  7.              p
  8.            }' urfile  

复制代码


第一行 和 第12行 交换并打印

[ 本帖最后由 yunccll 于 2008-4-14 01:45 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2008-04-14 01:41 |只看该作者

回复 #3 javierchen 的帖子


  1. sed -n '[address1]{
  2.                h
  3.                d
  4.            }
  5.            [address2]{
  6.                G
  7.                p
  8.            }' urfile
复制代码

[address] 可以使用regular expression 匹配就可以了。或者直接输入行号!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP