我有這樣一個列表(假設它是在summ.txt記憶):計數不同的元素
s1 d2
s1 d4
s3 d2
s4 d1
s1 d3
s4 d1
s5 d6
s3 d5
s1 d2
我需要獲得,在第一列的每一個元素( s_
)第二個不同元素的數量(d_
)。在這種情況下:
s1 3
s3 2
s4 1
s5 1
我使用一個shell腳本獲得此:
sor=`cat s.txt`
for d in $sor
do
n=$(grep $d ./summ.txt | cut -f2 | sort -u | wc -l)
echo $d, $n
done
哪裏s.txt是文件包含所有不同s_
。在這種情況下,它將是:
s1
s2
s3
s4
s5
我知道這種方法是有效的,因爲我試過了。主要問題是主列表(summ.txt)由大約1900萬個元素組成,而不同的s_
大約有3千萬個元素,所以計算所有元素需要太多時間。你能建議一個更快的算法嗎?
+1這將是一個很好的代碼高爾夫問題。 – Phil