2016-08-18 24 views
0

我有一個超過2000萬條記錄的文件,並且想要爲第一列的每個唯一值總計第五列,我已經使用了下面的代碼。awk中的關聯數組限制。內存使用

cat test.txt |awk 'BEGIN{FS="|"}{a[$1]+=$5;}END{for(i in a) print i"|"a[i];}' 

的最大值[I]在輸出被限制爲9999

麻煩幫助我...任何溶液??

+1

awk確實**不**在'9999'停止計數。關於你的問題還有別的,你還沒有告訴我們。一個較小的文件會發生什麼 - 你會得到你期望的結果嗎?你是否獲得了所有獨一無二的「$ 1」值輸出?你是否有任何錯誤信息或其他原因認爲問題是內存使用?你確定你有一個總和大於9999的'$ 1'嗎? –

+0

當我在上面的o/p上運行這個命令時,在$ 2中有grettrthan 9999的值 cat file.txt | awk'BEGIN {FS =「|」} $ 2> 9999' 但是使用後 sort -t「|」 -k2文件|尾部 第二列中的值僅高達9999 ...爲什麼如此? – user6677057

+0

'sort'按字母排序,不是數字。嘗試'sort -n ...' –

回答

1
$ cat > file 
1||||a|NOTICE A LETTER IN FIFTH 
1||||5 
2||||57 
2||||34535 
3||||34535353 
3||||1 
1||||1 
$ cat file|awk 'BEGIN{FS="|"}{a[$1]+=$5;}END{for(i in a) print i"|"a[i];}' 
1: 6 
2: 34592 
3: 34535354 

你對我的數據有什麼疑問?

+0

1 | 8 2 | 34592 3 | 34535354 ....這是工作..我不知道我的文件不工作.. :( – user6677057

+0

你確定總和aren真的是9999?'grep'某些參數索引('$ 1'),上傳到Pastebin併發布url? –

+0

是否因爲列5的值同時具有數值和字符串? – user6677057