uniq -c无法计算唯一的行数

时间:2015-12-29 18:03:37

标签: shell awk uniq

我正在尝试计算文本文件第3列中唯一出现的数字,这是一个非常简单的命令:

awk 'BEGIN {FS = "\t"}; {print $3}' bisulfite_seq_set0_v_set1.tsv | uniq -c

应该说像

1 10103
2 2093
3 109

但反而是废话,其中相同的数字被多次计算,例如

 20 1
  1 2
  1 1
  1 2
 14 1
  1 2

我也试过

 awk 'BEGIN {FS = "\t"}; {print $3}' bisulfite_seq_set0_v_set1.tsv | sed -e 's/ //g' -e 's/\t//g' | uniq -c

我已尝试过uniq手册页中我能想到的所有组合。如何使用uniq?

正确计算数字的唯一出现次数

2 个答案:

答案 0 :(得分:5)

uniq -c计算连续重复次数。要计算它们,您需要先对它进行排序。但是,使用awk您不需要。

$ awk '{count[$3]++} END{for(c in count) print count[c], c}' file 

会做

答案 1 :(得分:4)

awk - cutsortuniq的免费版本:

cut -f 3 bisulfite_seq_set0_v_set1.tsv | sort | uniq -c

uniq对相邻的匹配行进行操作,因此必须先对输入进行排序。