免费注册 查看新帖 |

Chinaunix

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

B文本参照A文本替换字段 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-08 15:06 |只看该作者 |倒序浏览
现有二个文本如下:
文本A:
987601100000025 123601100119663 ^M
^M
^M
987601100000033 123601100119671^M
^M
^M
987601100000058 123601100119689^M
.
.
.
文本B如下:
C90018940101|0|070702808|本军星||987601100000033||12.9|I62062040211111111      1100111111|
C90018940101|0|070702807|张建元||987601100070044||12.9|I62062040211111111      1100111111|
C90018940101|0|070702806|梅蕾||987601100070036||12.9|I62062040211111111      1100111111|
C90017660101|0|071700012|欧阳哲||987601100069384||18.3| |
C90017660101|200|071801956|李汉杰             |27|987601100027853| |21.7| |
C90017660101|200|071801955|李彦茹             |27|987601100027846| |21.7| |
C90017660101|200|071801954|牛桂兰             |27|987601100027838| |21.7| |
C90017660101|200|071801953|郭昌清             |27|987601100027820| |21.7| |
.
.
.
现有要求如下:
以A文本为基础 将B文本中符合A文本中第一个字段的 字段替换为A文本中的第二个字段
注:A文本的二个字段以空格分开。
如 文本B中的第一行 有987601100000033 和 文本A中的第二行的第一个字段相符,这时将它替换为A文本

中的第二行的第二个字段123601100119671(无^M)
要求不能换错和遗漏。

比较急,请教各位兄弟了,不好意思

论坛徽章:
0
2 [报告]
发表于 2006-11-08 19:54 |只看该作者
很简单, 你可以将 A, B 文件中的数据到如到一个数据库的表中, 然后对 B 表中数据进行遍历, 同时在 A 表中查询对应的记录, 就可以非常容易的实现你提出的问题.

论坛徽章:
0
3 [报告]
发表于 2006-11-08 21:28 |只看该作者
这是我第四次写这玩意决对没有第五次
http://bbs.chinaunix.net/viewthread.php?tid=836775
http://bbs.chinaunix.net/viewthread.php?tid=836018
http://bbs.chinaunix.net/viewthread.php?tid=849629
再来一个新仿awk

  1. perl -F'\|' -ane '@a=`cat a.txt`;$save=$F[5];(undef,$F[5])=split(" ",join(" ",grep(/^$F[5]/,@a)));$F[5]=~s/[^\d]+$//;$F[5]=~s/^$/NULL/;s/$save/$F[5]/;print' b.txt
复制代码

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
4 [报告]
发表于 2006-11-08 21:54 |只看该作者
对awk感兴趣的可以看看这篇
http://bbs.chinaunix.net/viewthr ... p;extra=&page=1

论坛徽章:
0
5 [报告]
发表于 2006-11-11 02:52 |只看该作者

使用awk效率比较高~

这种情况尽可能不用DB,容易产生惰性,不爱思考。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP