亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
123下一頁
最近訪問板塊 發(fā)新帖
查看: 5482 | 回復(fù): 21
打印 上一主題 下一主題

如何對100百萬行的字符串得到唯一字符串及計數(shù)? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-11-16 19:44 |只看該作者 |倒序瀏覽
我有100百萬行的字符串,約150的長度, 里面有一些是重復(fù)的字符串
現(xiàn)在想得到最終的去除重復(fù)后的字符串及每個字符串出現(xiàn)的次數(shù). perl中有什么快速的算法嗎?
google了下面的方法,不過速度也不快.
http://www.experts-exchange.com/ ... ous/Q_22722019.html

下面是對50百萬行的日志進(jìn)行計數(shù):
open(F,"logfile.log");
open(TMP,">temp.log");
while (<F>) {
  @data = split(/\t/,$_);   # logfile is tab-separated
  print TMP $data[5]."\n";     # ID is in the 6th column
}
close(F);
close(TMP);

$unique = `sort temp.log | uniq | wc -l`;
print "There are ".$unique." user ID's in the log file";

論壇徽章:
0
2 [報告]
發(fā)表于 2010-11-16 20:25 |只看該作者
100W行不算太大,可以用hash.
如果覺得太大,那就用數(shù)據(jù)庫,然后group by。

論壇徽章:
0
3 [報告]
發(fā)表于 2010-11-16 20:34 |只看該作者
在本版又是`sort`又是`uniq`的,我perl雄風(fēng)何在?


$ cat 1.txt
iii sfsdf sfdsf kkk 123 abc 456
iii isfsf fdsfe kkk 123 xyz 456
xxx xcfxs 23424 kkk 123 xyz 999
xxx xcfxs jljlj kkk 123 abc 999
zzz xcfxs xcvxv kkk 123 def 333
sdf xcfxs 23424 kkk 123 sdk 333
zzz xcfxs 08008 kkk 123 sdk 993


$ cat t1.pl
use strict;

my %hash;
open my $fd,"1.txt" or die $!;
while(<$fd>) {
    next unless /^(\S+\s+){5}(\S+)/;
    $hash{$2} ++;
}
close $fd;

print scalar keys %hash;

論壇徽章:
0
4 [報告]
發(fā)表于 2010-11-16 20:43 |只看該作者
再差也要整個ruby實現(xiàn)~~

  1. hash = Hash.new(0)

  2. File.open("1.txt").each do |c|
  3.    hash[$2] +=1 if c =~ /^(\S+\s+){5}(\S+)/
  4. end

  5. puts hash.keys.size
復(fù)制代碼

論壇徽章:
0
5 [報告]
發(fā)表于 2010-11-16 21:12 |只看該作者
在本版又是`sort`又是`uniq`的,我perl雄風(fēng)何在?
蘭花仙子 發(fā)表于 2010-11-16 20:34



    仙子好兇峰,ruby看不懂~

論壇徽章:
1
未羊
日期:2014-09-08 22:47:27
6 [報告]
發(fā)表于 2010-11-16 21:15 |只看該作者
我有100百萬行的字符串,約150的長度, 里面有一些是重復(fù)的字符串
現(xiàn)在想得到最終的去除重復(fù)后的字符串及每個 ...
yisn 發(fā)表于 2010-11-16 19:44



    注意,樓主是100百萬行,也就是上億條的數(shù)量級。

論壇徽章:
0
7 [報告]
發(fā)表于 2010-11-16 21:18 |只看該作者
回復(fù) 6# wxlfh


   其實看是看文件,要是重復(fù)的多的話,內(nèi)存也不會太大吧

論壇徽章:
0
8 [報告]
發(fā)表于 2010-11-16 21:51 |只看該作者
如果日志實在太大,是不可以考慮把它分割成兩三份,然后逐個讀入hash,之后再對分別輸出的文檔再hash一次?
可能這方法有點笨,但效率應(yīng)該能提高吧~

論壇徽章:
46
15-16賽季CBA聯(lián)賽之四川
日期:2018-03-27 11:59:132015年亞洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49雙魚座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亞冠之布里斯班獅吼
日期:2015-07-13 10:44:56
9 [報告]
發(fā)表于 2010-11-16 22:14 |只看該作者
本帖最后由 zhlong8 于 2010-11-16 22:17 編輯

md5應(yīng)該沒150那么長吧

胡亂聯(lián)想下

論壇徽章:
0
10 [報告]
發(fā)表于 2010-11-17 08:56 |只看該作者
我perl雄風(fēng)何在?
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP