免费注册 查看新帖 |

Chinaunix

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

[文本处理] 类似于VLOOKUP查的函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-05 10:55 |只看该作者 |倒序浏览
Linux 系统中有没类似于OFFICE中VLOOKUP查找函数
有两个文本,
文本1 bk.txt  中字段$1有重复
277070008  108
277080013  203
277080018  404
277080013  213
277010017  32
277090012   0.8
277070008  106
........................

文本2 acc.txt 每一行的内容都是唯一的
277070008 关二
277080013 张三
277080018 李四
277010017 王五
277090012 朱六
..........................

要求根据字段$1,   文本1在文本2中查找得到以下结果
277070008  108    关二
277080013  203     张三
277080018  404    李四
277080013  213    张三
277010017  32     王五
277090012   0.8   朱六
277070008  106   关二
........................

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
2 [报告]
发表于 2012-08-05 11:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2012-08-05 11:13 |只看该作者
有什么方法可以实现查找

论坛徽章:
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 [报告]
发表于 2012-08-05 11:22 |只看该作者
学学awk吧,这个工具挺好的。

论坛徽章:
0
5 [报告]
发表于 2012-08-05 11:25 |只看该作者
r2007 发表于 2012-08-05 11:22
学学awk吧,这个工具挺好的。


awk 两个文本的处理没学过
你能帮助写个代码或脚本吗

论坛徽章:
0
6 [报告]
发表于 2012-08-05 12:03 |只看该作者
本帖最后由 kk5234 于 2012-08-05 12:07 编辑

回复 5# 393051431
  1. awk 'FNR==NR{a[$1]=$2;next}{print $0"\t"a[$1]}' acc.txt bk.txt
复制代码

论坛徽章:
0
7 [报告]
发表于 2012-08-06 08:47 |只看该作者
曾经为了处理匹配,还真的去找过excel里的vlookup用法。。
现在么,linux在手,万事无忧。。

论坛徽章:
0
8 [报告]
发表于 2012-08-06 13:42 |只看该作者
本帖最后由 英语盲学linux 于 2012-08-06 13:43 编辑
  1. awk 'NR==FNR{a[$1NR]=$2;next}{for(i in a) if(i ~ $1) print $1,a[i],$NF}' file1 file2
复制代码

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
9 [报告]
发表于 2012-08-06 14:37 |只看该作者
回复 1# 393051431
  1. [seesea@UC ~]$ cat bk.txt
  2. 277070008 108
  3. 277080013 203
  4. 277080018 404
  5. 277080013 213
  6. 277010017 32
  7. 277090012 0.8
  8. 277070008 106
  9. [seesea@UC ~]$ cat acc.txt
  10. 277070008 关二
  11. 277080013 张三
  12. 277080018 李四
  13. 277010017 王五
  14. 277090012 朱六
  15. # 不要求原始顺序的话
  16. [seesea@UC ~]$ join <(sort bk.txt) <(sort acc.txt)
  17. 277010017 32 王五
  18. 277070008 106 关二
  19. 277070008 108 关二
  20. 277080013 203 张三
  21. 277080013 213 张三
  22. 277080018 404 李四
  23. 277090012 0.8 朱六
  24. # 要求原始顺序的话
  25. [seesea@UC ~]$ old_ifs=$IFS; IFS=\n';for line in $(cat bk.txt); do grep "$line" <(join <(sort bk.txt) <(sort acc.txt)); done; IFS=$old_ifs
  26. 277070008 108 关二
  27. 277080013 203 张三
  28. 277080018 404 李四
  29. 277080013 213 张三
  30. 277010017 32 王五
  31. 277090012 0.8 朱六
  32. 277070008 106 关二
复制代码

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
10 [报告]
发表于 2012-08-06 16:33 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP