免费注册 查看新帖 |

Chinaunix

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

[文本处理] sed在匹配最后一次的行后增加内容 [复制链接]

论坛徽章:
0
发表于 2014-10-14 11:28 |显示全部楼层
// 应该和 /bb/一起理解吧,表示在/bb/这一行 做后面的操作,
没有//的话,就变成第0行到第一次匹配/bb/这行都要 加上test\n这个

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
发表于 2014-10-14 11:30 |显示全部楼层
本帖最后由 hjfeng1988 于 2014-10-14 11:57 编辑

回复 18# yestreenstars
  1. seq 10 | sed '1,/5/{//i\
  2. > test
  3. > }'
复制代码
sed: -e expression #1, char 0: no previous regular expression
0改为1就会错。

如果我在//加匹配内容就不错
  1. seq 10 | sed '1,/5/{/5/i\
  2. test
  3. }'
复制代码
i、a之类的不能在{}中使用,除非使用-e参数分开写。具体要怎么写,写个例子吧

论坛徽章:
22
处女座
日期:2014-10-11 13:33:292015亚冠之塔什干火车头
日期:2015-07-20 19:59:042015亚冠之塔什干火车头
日期:2015-07-26 10:59:31程序设计版块每日发帖之星
日期:2015-08-05 06:20:00每日论坛发贴之星
日期:2015-08-05 06:20:00程序设计版块每日发帖之星
日期:2015-08-07 06:20:00每日论坛发贴之星
日期:2015-08-07 06:20:002015亚冠之阿尔纳斯尔
日期:2015-10-01 15:23:28白银圣斗士
日期:2015-12-07 17:17:06操作系统版块每日发帖之星
日期:2015-12-27 06:20:002015亚冠之广州富力
日期:2015-07-08 15:48:31程序设计版块每日发帖之星
日期:2015-06-11 22:20:00
发表于 2014-10-14 11:32 |显示全部楼层
回复 19# jcdiy0601
油菜啊


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2014-10-14 12:23 |显示全部楼层
回复 22# hjfeng1988

你是Unix系统吗?
   

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
发表于 2014-10-14 12:53 |显示全部楼层
回复 24# yestreenstars


    centos

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2014-10-14 13:38 |显示全部楼层
回复 25# hjfeng1988

我也是centos,却没这个问题~{:3_193:}
   

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
发表于 2014-10-14 14:49 |显示全部楼层
回复 26# yestreenstars


    QQ截图20141014144644.png

好吧,不用纠结这个问题了。我比较希望知道sed i在{}怎么加-e
  1. sed '1,/bb/{/bb/i\test}' file
复制代码

论坛徽章:
22
处女座
日期:2014-10-11 13:33:292015亚冠之塔什干火车头
日期:2015-07-20 19:59:042015亚冠之塔什干火车头
日期:2015-07-26 10:59:31程序设计版块每日发帖之星
日期:2015-08-05 06:20:00每日论坛发贴之星
日期:2015-08-05 06:20:00程序设计版块每日发帖之星
日期:2015-08-07 06:20:00每日论坛发贴之星
日期:2015-08-07 06:20:002015亚冠之阿尔纳斯尔
日期:2015-10-01 15:23:28白银圣斗士
日期:2015-12-07 17:17:06操作系统版块每日发帖之星
日期:2015-12-27 06:20:002015亚冠之广州富力
日期:2015-07-08 15:48:31程序设计版块每日发帖之星
日期:2015-06-11 22:20:00
发表于 2014-10-14 14:50 |显示全部楼层
回复 10# hjfeng1988
“//”表示最近使用过的一个正则表达式
sed '0,/bb/{//s/.*/test\n&/}'   等价于   sed '0,/bb/{/bb/s/.*/test\n&/}'


   

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
发表于 2014-10-14 14:57 |显示全部楼层
回复 28# 聆雨淋夜


    多谢提醒,这个已经看过info sed明白一些了。

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
发表于 2014-10-14 15:01 |显示全部楼层
回复 27# hjfeng1988


    sed -e '1,/bb/{/bb/i\test' -e'}' file
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP