计算文本文件中三位数的数量

计算文本文件中三位数的数量

我有一个包含数百个三位数的文本文件。
例如:

 0  2  3
 0  2  3
 0  2  9
 0  3  9
 0  9  2
 0  9  2
 0  9  9
 1  2  2
 1  2  2
 1  2  2
 1  2  9
 1  2  9
 1  3  3
 1  9  2
 1  9  2
 1  9  2
 1  9  3
 1  9  9
 1  9  9
 1  9  9
 1  9  9
 2  0  2
 2  0  3
 2  0  9
 2  1  2
 2  1  2
 2  1  3
 2  1  9
 2  1  9
 2  2  4
 2  2  5
 2  2  5
 2  2  5
 2  2  6
 2  2  6
 2  2  8

我想将其转换为显示文件中每个数字的数量,看起来像这样:

 0  2  3     2
 0  9  2     2
 1  2  2     3
 etc

答案1

sort -n numbers.txt | uniq -c | sed -E 's/^( *[0-9]+) (.*)$/\2 \1/'是实现目标最简单的方法。它:

  • sort你的n先数数,以防万一
  • Cuniq计算每个ue 集的长度
  • sed将结果移动到每个字符串的后面

答案2

这些行由数字序列组成这一事实在很大程度上是无关紧要的 - 除非您想对数字本身进行算术运算,否则您可以像任何其他字符串一样对它们进行计数/唯一化,例如使用关联数组或哈希:

awk '{c[$0]++} END {for (i in c) printf "%s\t%d\n", i, c[i]}' numbers.txt

或者

perl -lnE '$c{$_}++ }{ for $k (keys %c) { say "$k\t$c{$k}" }' numbers.txt

相关内容