免费注册 查看新帖 |

Chinaunix

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

用awk实现2个文件内容的替换 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-04 10:20 |只看该作者 |倒序浏览
现在有个A文件,里面的内容如下:

Text - text : 54  Type : 1  abcd: (300930,224840)
   String : aaa  Justification
Rectangle - text : 54  text: 1  : (300860,224770) (301000,224910)
Text - text : 54  Type : 1  abcd: (300930,225400)
   String : bbb  Justification
Rectangle - text : 54  text: 1  : (300860,225330) (301000,225470)

B文件的内容如下:

hello ketty
where are you from: text
I came from = (a,b)

现在要求对A进行逐行扫描,把里面的String中的aaa或者bbb位置的字符替换到B中的hello中的ketty;
把A中的Rectangle行中的54替换到B文件中where行中的text,把A中的Rectangle行的第一个坐标
替换到B中的I came行中的a,b。

请问怎么实现啊?

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
2 [报告]
发表于 2009-09-04 10:57 |只看该作者
没想到好方法,写了个最笨的

awk -F '[ )( ,]+' 'NR==FNR&&/String/{a=$4}/Rectangle/{b=$5;c=$9;d=$10}NR>FNR{if(/hello/){gsub($2,a)}if(/where/){gsub($5,b)}if(/I/){gsub($5,c)}if(/I/){gsub($6,d)};print}' A B

论坛徽章:
0
3 [报告]
发表于 2009-09-04 11:28 |只看该作者
谢谢楼上的,不过好是有点错误。

awk -F '[ )( ,]+' 'NR==FNR&&/String/{a=$4}/Rectangle/{b=$5;c=$12;d=$13}NR>FNR{if(/hello/){gsub($2,a)}if(/where/){gsub($5,b)}if(/I/){gsub($5,c)}if(/I/){gsub($6,d)};print}' A B

我修改成上面这样的,结果出来如下:
hello sti_out
where are you from: 52
I c287490me from = (287490,454860)

就是说第三行的came中的a变成了287490了,不知道怎么回事,我把came改成come就没这个问题了

论坛徽章:
0
4 [报告]
发表于 2009-09-04 11:30 |只看该作者
顺便请问下楼上大哥,假如没有B文件,要在执行过程中产生上面这种B文件,怎么修改程序啊?

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
5 [报告]
发表于 2009-09-04 12:01 |只看该作者
原帖由 minzyyl 于 2009-9-4 11:30 发表
顺便请问下楼上大哥,假如没有B文件,要在执行过程中产生上面这种B文件,怎么修改程序啊?


最后的print 处 重定向一个新文件 print > "H"


是有你说的错误,我再看看

论坛徽章:
0
6 [报告]
发表于 2009-09-04 12:47 |只看该作者
原帖由 MYSQLER 于 2009-9-4 12:01 发表


最后的print 处 重定向一个新文件 print > "H"


是有你说的错误,我再看看



重定向一个新文件H,那么前面的也要修改? 因为新文件中不存在hello等啊,这些都要自己print到新文件中吧?

刚学习这个,网上没找到比较完整的awk教程啊,郁闷,请多指教哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP