我将数据存储在一个大的(20Gb)制表符分隔文本文件中,如下面的示例(input.txt):
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 :(得分:1)
awk '{ count[$4]++ } END { for (i in count) printf "%s\t%d\n", i, count[i] }' \
big.file.txt
对于第4列中的每个值,递增该值的计数器。最后,打印找到的每个值及其计数。这将以不确定的顺序打印值。如果您想按某种顺序使用它,可以使用sort
对输出进行后处理,或者对awk
中的键进行排序,然后按排序的键顺序打印。