免费注册 查看新帖 |

Chinaunix

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

一个join的问题, 在线等 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-18 11:24 |只看该作者 |倒序浏览
有两个文件:
01.txt:
01:01:01
02:02:01
02:03:01
02:04:01
02:05:01
01:06:01

02.txt:
02:01:02
02:02:02
02:03:02
02:04:02
02:05:02
02:06:02

01.txt 的前两项和02.txt的前两项相关联,我现在想得到01.txt-02.txt
也就是得到:
01:01:01
01:06:01

哪位老大帮帮忙,另:需要注意效率,我的文件分别是30万和2万条
多谢多谢拉

论坛徽章:
0
2 [报告]
发表于 2005-04-18 12:03 |只看该作者

一个join的问题, 在线等

另:如果需要得到交集怎么办

论坛徽章:
0
3 [报告]
发表于 2005-04-18 14:59 |只看该作者

一个join的问题, 在线等

  1. /usr/xpg4/bin/grep -f <(comm -23 <(awk 'BEGIN{FS=OFS=":"}{print $1,$2}' file1) <(awk 'BEGIN{FS=OFS=":"}{print $1,$2}' file2)) file1
复制代码

取交集把comm的参数改为-12即可
效率不算高,一会有时间了再想想怎么写个效率高的

论坛徽章:
0
4 [报告]
发表于 2005-04-18 16:44 |只看该作者

一个join的问题, 在线等

可以解释一下思路和具体细节吗? 没有看懂。

论坛徽章:
0
5 [报告]
发表于 2005-04-18 17:53 |只看该作者

一个join的问题, 在线等

您哪个文件是30万行的?

论坛徽章:
0
6 [报告]
发表于 2005-04-18 17:55 |只看该作者

一个join的问题, 在线等

应该是01.txt?

论坛徽章:
0
7 [报告]
发表于 2005-04-18 17:57 |只看该作者

一个join的问题, 在线等

论坛徽章:
0
8 [报告]
发表于 2005-04-18 20:25 |只看该作者

一个join的问题, 在线等

第一个改成
  1. grep -v -f <(comm -12 <(awk 'BEGIN{FS=OFS=":"}{print $1,$2}' file1) <(awk 'BEGIN{FS=OFS=":"}{print $1,$2}' file2)) file1
复制代码
比原来的效率高不少
  1. join -v1 -j1 <(sed 's/:/ /2' file1) <(sed 's/:/ /2' file2)|sed 's/ /:/'
复制代码

  1. awk 'BEGIN{FS=OFS=":"}{if(NR==FNR){a[$1$2]=$0}else{if($1$2 in a){}else{print}}}' file2 file1
复制代码

您自己试试这三个哪个效率高些~别忘了告诉偶,偶也想知道

论坛徽章:
0
9 [报告]
发表于 2005-04-19 17:18 |只看该作者

一个join的问题, 在线等

结果如下:
1。没有命令comm;
2。Missing name for redirect.
3。执行成功

能否详细解释一下,没有看懂

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
10 [报告]
发表于 2005-04-19 17:34 |只看该作者

一个join的问题, 在线等

原帖由 "LANDEHUTU" 发表:
结果如下:
1。没有命令comm;
2。Missing name for redirect.
3。执行成功

能否详细解释一下,没有看懂

建议楼主把自己的环境描述清楚,这样便于大家讨论
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP