免费注册 查看新帖 |

Chinaunix

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

[文本处理] 怎么用sed替换匹配行上面行指定内容? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-21 02:46 |只看该作者 |倒序浏览
本帖最后由 kinger7777 于 2015-07-21 02:47 编辑

比如这样的文本:
11111           tom
xxxxx         jerry
fdsafsa       john
998877      fdsafsafsa
fdsafax       china
ddddaax         cat8877aa


比如以上面文本第5行中的china做匹配,替换上面行中的jerry为tom
如何做?

多谢各位。

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
2 [报告]
发表于 2015-07-21 09:03 |只看该作者
  1. sed ':1;N;/china/{s/jerry/tom/;b};b1' file
复制代码

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
3 [报告]
发表于 2015-07-21 11:19 |只看该作者
  1. sed -n '/china/!{1!H;1h};/china/{x;s/jerry/tom/g;x;H};${x;p}' urfile
复制代码

论坛徽章:
0
4 [报告]
发表于 2015-07-21 11:32 |只看该作者
回复 2# hjfeng1988


    这个不行,如果上面有其他行也有jerry,则会被替换哦。我要替换的是第二行中的jerry

论坛徽章:
0
5 [报告]
发表于 2015-07-21 11:35 |只看该作者
回复 3# bikong0411


    可能是我没有表达清楚,我只想通过匹配到china,替换china上面第某行里的jerry(重点是要以china做匹配),并非所有,这样写会替换china上面所有的jerry(如果有的话)

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
6 [报告]
发表于 2015-07-21 11:45 |只看该作者
本帖最后由 hjfeng1988 于 2015-07-21 14:16 编辑

回复 7# kinger7777
  1. sed '1{N;N};N;/china/{s/jerry/tom/;q};P;D' file
复制代码
把q去掉
  1. sed '1{N;N};N;/china/{s/jerry/tom/};P;D' file
复制代码

论坛徽章:
0
7 [报告]
发表于 2015-07-21 11:54 |只看该作者
回复 6# hjfeng1988


    这样china下面一行会被吃掉,结果变成


11111           tom
xxxxx         tom
fdsafsa       john
998877      fdsafsafsa
fdsafax       china

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
8 [报告]
发表于 2015-07-21 12:22 |只看该作者
回复 5# kinger7777


    给个包含所有可能的输入和期望的输出吧,你这样口说还是说不清楚。

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
9 [报告]
发表于 2015-07-21 23:02 |只看该作者
回复 1# kinger7777
  1. n=2;sed -r ':1;$b;N;/china/!b1;s#[^ \n]+\n#tom\n#'$n file
  2. 11111           tom
  3. xxxxx         tom
  4. fdsafsa       john
  5. 998877      fdsafsafsa
  6. fdsafax       china
  7. ddddaax         cat8877aa
复制代码

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
10 [报告]
发表于 2015-07-22 10:09 |只看该作者
回复 6# hjfeng1988


    哦,还以为是都替换
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP