免费注册 查看新帖 |

Chinaunix

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

我被 sed难住了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-07 17:42 |只看该作者 |倒序浏览
本帖最后由 雨加雪 于 2010-09-07 20:57 编辑

我现在有个文件,大概的内容是这样的
第一行 :啊啊啊啊                     在原文件中我不知道具体在第几行的,我的困难在于 如何在替换第一次后,替换第二次也就是下一个#if
第二行:#if()
第三行:#endif
第四行
第五行:得到的
第六行:#if()
第七行#endif

我要插入两行不同的内容到#if()后面,#endif前面,
我在脚本里写的是
sed -i  's/啊啊啊啊\n#if()/replace/'  文件名
sed -i 's/得到的\n#if()/replace1/' 文件名  ::::::::::这样好想识别不了\n
我又写了
sed -i '/#if()/a\ replace/1' 文件名
sed -i '/#if()/a\ repleac1/2' 文件名  这样也不性
  求救

论坛徽章:
0
2 [报告]
发表于 2010-09-07 17:45 |只看该作者
回复 1# 雨加雪


    你的if和endif之间又没有内容,直接匹配if查到后面或者直接匹配endif查到前面不行吗?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
3 [报告]
发表于 2010-09-07 17:58 |只看该作者
使用范围地址。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
4 [报告]
发表于 2010-09-07 19:16 |只看该作者
  1. sed -i '2s/$/\n replace1/' urfile
  2. sed -i '6s/$/\n replace2/' urfile
复制代码

论坛徽章:
0
5 [报告]
发表于 2010-09-07 23:24 |只看该作者
  1. $cat input.txt
  2. aaaaaaaa
  3. #if()
  4. #endif

  5. bbbbb
  6. #if()
  7. #endif

  8. $sed  '/a\+/{N;s/#if()/\0\nreplace11111111/;};/b\+/{N;s/#if()/\0\nreplace222222222/}' input.txt
  9. aaaaaaaa
  10. #if()
  11. replace11111111
  12. #endif

  13. bbbbb
  14. #if()
  15. replace222222222
  16. #endif
复制代码

论坛徽章:
0
6 [报告]
发表于 2010-09-08 08:35 |只看该作者
sed -i 's/啊啊啊$//'  file
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP