免费注册 查看新帖 |

Chinaunix

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

求助:awk处理两个文件(在线等结果) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-13 16:49 |只看该作者 |倒序浏览
本帖最后由 bokugy 于 2012-02-13 16:56 编辑

file1 文件:
  cat file1
   100,test001,A21001,A22001,A23001
   100,test002,A21002,A22002,A23002
   300,test003,A21003,A22003,A23003
   500,test004,A21004,A22004,A23004
   700,test005,A21005,A22005,A23005

   cat file2
   100,20120210, AA010,test001,123,1000.00
   300,20120211, AA010,test003,123,2000.00
   700,20120212, AA010,test005,123,3000.00

规则:比较file1的第一列与file2的第一列和file1的第二列与file2的第四列,如果相等,将file1的第三,四,五列插入到file2的第五六列之间。输出到file3。

想要的结果如下:
   cat file3
   100,20120210, AA010,test001,123,A21001,A22001,A23001,1000.00
   300,20120211, AA010,test003,123,A21003,A22003,A23003,2000.00
   700,20120212, AA010,test005,123,A21005,A22005,A23005,3000.00

我的写法如下:
   awk -F"," 'NR==FNR{a[$1]=$1,a[$2]=$2,a[$3]=$3,a[$4]=$4,a[$5]=$5}NR>FNR{print $1","$2","$3","$4","$5","a[$3]","a[$4]","a[$5]","$6}'file1 file2 > file3

   可是却得到如下结果:
   cat file3
   100,20120210, AA010,test001,123,,,A21001,1000.00
   300,20120211, AA010,test003,123,,,A21003,2000.00
   700,20120212, AA010,test005,123,,,A21005,3000.00

跪求高手指正我的错误,叩谢啊!

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2012-02-13 17:17 |只看该作者
本帖最后由 jason680 于 2012-02-13 17:18 编辑

回复 1# bokugy

$ awk -F"," 'NR==FNR{a[$1","$2]=$3","$4","$5}NR>FNR{print $1","$2","$3","$4","$5","a[$1","$4]","$6}' file1 file2
   100,20120210, AA010,test001,123,A21001,A22001,A23001,1000.00
   300,20120211, AA010,test003,123,A21003,A22003,A23003,2000.00
   700,20120212, AA010,test005,123,A21005,A22005,A23005,3000.00
   

论坛徽章:
0
3 [报告]
发表于 2012-02-13 17:29 |只看该作者
问题解决了,非常感谢!!

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
4 [报告]
发表于 2012-02-13 19:01 |只看该作者
看到这么多 "," 我就头晕。 要会用FS 和 OFS.
  1. awk 'NR==FNR{a[$1 FS $2]=$3 FS $4 FS $5;next}{$6=a[$1 FS $4] FS $6}1' FS=, OFS=, file1 file2
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP