2016-10-09 12 views
0

以下のサンプル(input.txt)のように、大きな(20Gb) :AWKの場合:タブで区切られたファイル内の列内の発生数をカウントし、新しいtsvファイルにデータを書き込む

1234 567 T 0 
1267 890 Z 1 
1269 908 T 1 
3142 789 T 0 
7896 678 Z 0 

私は列4の各エントリの出現を数え、これを新しいタブで区切られたファイルに自動的に書きたいと思います。

私はoutput.txtとに次のように見たい:

0 3 
1 2 

誰がAWKでこれを行うための高速な方法を提案することはできますか?

+0

perl、awk、またはpythonを使用します。 –

答えて

1
awk '{ count[$4]++ } END { for (i in count) printf "%s\t%d\n", i, count[i] }' \ 
    big.file.txt 

列4の値ごとに、その値のカウンタを増やします。最後に、見つかった各値とその数を印刷します。これにより、不確定な順序で値が印刷されます。何らかの順序でそれを望むなら、出力をsortで後処理するか、awkの中のキーをソートし、ソートされたキー順で印刷してください。

関連する問題