免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: niyunjiu
打印 上一主题 下一主题

请教一个面试题,关于大文件处理的 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-07-24 13:07 |只看该作者
原帖由 nuclearxin 于 2009-7-24 11:17 发表
awk基础教程不就是他吗?
而且io最小
awk是最佳解决办法~


我知道的是grep和awk

但是 为什么awk是最佳呢?

论坛徽章:
0
22 [报告]
发表于 2009-07-24 13:40 |只看该作者

回复 #1 niyunjiu 的帖子

[2]cat 1
1
3
4
6
87
9

[2]
[2]cat 2
2
4
6
7
[2]
[2]
[2]grep -vFf 1 2
2
7
[2]grep -vFf 2 1
1
3
9

[2]grep -Ff 2 1
4
6
87
[2]grep -Ff 1 2
4
6

论坛徽章:
0
23 [报告]
发表于 2009-07-24 14:02 |只看该作者
原帖由 luyi1983 于 2009-7-24 13:07 发表


我知道的是grep和awk

但是 为什么awk是最佳呢?

呵呵.不好意思
是据我所知.因为awk用数组的话只有一次io读写 两个文件各一次.   效率第一啊
其他的的话.
你用c重新专门写个的话效率也许更高~

论坛徽章:
0
24 [报告]
发表于 2009-07-24 17:10 |只看该作者

回复 #1 niyunjiu 的帖子

发一个awk版的
b 比a多的
awk '{if(NR==FNR) { a[$1] } else  { if (! ($1 in a)) print $1} }' a b
a 比 b多的
awk '{if(NR==FNR) { a[$1] } else  { if (! ($1 in a)) print $1} }' b a
awk '{if(NR==FNR) { a[$1] } else  { if ($1 in a) print $1} }' a b

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
25 [报告]
发表于 2009-07-24 17:19 |只看该作者
感觉是awk效率高。comm需要先排序,类似数据库的merge join;awk类似数据库的hash join。

谁能实测下,看看结果快慢如何?

论坛徽章:
0
26 [报告]
发表于 2009-07-27 11:05 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
27 [报告]
发表于 2009-07-27 13:55 |只看该作者

回复 #14 可恶的 的帖子

这个好。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
28 [报告]
发表于 2009-07-27 19:37 |只看该作者
你要是想效率,我觉得导入oracle最效率,10万行不算什么...实现的sql也很简单

论坛徽章:
0
29 [报告]
发表于 2009-07-28 00:06 |只看该作者

回复 #28 非凡公子 的帖子

那用office access也可以吧。

论坛徽章:
0
30 [报告]
发表于 2009-07-28 05:34 |只看该作者
好帖,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP