免费注册 查看新帖 |

Chinaunix

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

[文本处理] 请教unix环境下如何将A文件中部分内容替换B文件中的相同部分 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-04-25 22:45 |只看该作者 |倒序浏览
请问我有两个文件
a.txt
<r p="1">0</r>
<r p="2">0</r>
<r p="3">0</r>
<r p="4">0</r>
<r p="5">0</r>
<measInfo measInfoId="BSSGP,bssgp">
<r p="1">0</r>
<r p="2">0</r>
<r p="3">0</r>
<r p="4">0</r>
<r p="5">0</r>
<r p="6">0</r>
<r p="7">0</r>
<measInfo measInfoId="BSSGP,bssgp_non_indexed">
<r p="1">172328</r>
<r p="2">475498</r>


b.txt

<r p="1">35328842</r>
<r p="2">0</r>
<r p="3">18446744081936071082</r>
<measInfo measInfoId="BSSGP,bssgp">
<r p="1">35328842</r>
<r p="2">0</r>
<r p="3">18446744081936071082</r>
<measInfo measInfoId="BSSGP,bssgp_non_indexed">
<r p="1">172328</r>
<r p="2">475498</r>

我想从a.txt中从<measInfo measInfoId="BSSGP,bssgp"> 到 <measInfo measInfoId="BSSGP,bssgp_non_indexed">的内容
替换b.txt中从<measInfo measInfoId="BSSGP,bssgp"> 到 <measInfo measInfoId="BSSGP,bssgp_non_indexed">的内容,如何操作?

谢谢各位大神!在线等!

论坛徽章:
1
2015亚冠之鹿岛鹿角
日期:2015-05-12 13:04:44
2 [报告]
发表于 2015-04-26 01:12 |只看该作者
  1. awk '/bssgp"/{p=1}/indexed"/{p=0}NR==FNR&&p{a[++m]=$0;next}NR>FNR&&!p{print}NR>FNR&&/bssgp"/{for(i=1;i<=m;i++)print a[i]}' a.txt b.txt
复制代码

论坛徽章:
0
3 [报告]
发表于 2015-04-26 09:22 |只看该作者
谢谢!但是结果貌似不对

eric@ahmas1o> awk '/bssgp"/{p=1}/indexed"/{p=0}NR==FNR&&p{a[++m]=$0;next}NR>FNR&&!p{print}NR>FNR&&/bssgp"/{for(i=1;i<=m;i++)print a[i]}' a.txt b.txt
p: Event not found.

能否编个awk的脚本,用awk -f file来实现呢?

论坛徽章:
0
4 [报告]
发表于 2015-04-26 09:24 |只看该作者
能否以"BSSGP,bssgp"和"BSSGP,bssgp_non_indexed"作为判断的起始和结尾呢?

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
5 [报告]
发表于 2015-04-26 10:29 |只看该作者
  1. awk -vRS='<[^>]+BSSGP[^<]+>' 'NR==2{t=$0}NR>FNR{FNR==2?$0=t:1;printf $0""RT}' inputfile1 inputfile2
复制代码

论坛徽章:
0
6 [报告]
发表于 2015-04-26 10:43 |只看该作者
貌似还是不行,请哪位高手再帮忙想想办法,多谢!

eric@ahmas1o> awk -vRS='<[^>]+BSSGP[^<]+>' 'NR==2{t=$0}NR>FNR{FNR==2?$0=t:1;printf $0""RT}' a.txt b.txt
awk: syntax error near line 1
awk: illegal statement near line 1

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
7 [报告]
发表于 2015-04-26 10:56 |只看该作者

你是什么环境啊?

论坛徽章:
0
8 [报告]
发表于 2015-04-26 11:07 |只看该作者
是solaris Unix

论坛徽章:
0
9 [报告]
发表于 2015-04-26 11:14 |只看该作者
还有就是我的文件中还有可能出现其它的BSSGP的字符串,因此能否仅限于"BSSGP,bssgp"和"BSSGP,bssgp_non_indexed"作为判断的起始和结尾呢?

论坛徽章:
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
10 [报告]
发表于 2015-04-26 12:28 |只看该作者
  1. sed -r '/<measInfo measInfoId/{:a;N;/\n<measInfo measInfoId/!ba;s#^.*$#sed -n '/measInfo/,/measInfo/p' a.txt#e}' b.txt
  2. <r p="1">35328842</r>
  3. <r p="2">0</r>
  4. <r p="3">18446744081936071082</r>
  5. <measInfo measInfoId="BSSGP,bssgp">
  6. <r p="1">0</r>
  7. <r p="2">0</r>
  8. <r p="3">0</r>
  9. <r p="4">0</r>
  10. <r p="5">0</r>
  11. <r p="6">0</r>
  12. <r p="7">0</r>
  13. <measInfo measInfoId="BSSGP,bssgp_non_indexed">
  14. <r p="1">172328</r>
  15. <r p="2">475498</r>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP