我有一个包含数百个三位数的文本文件。
例如:
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先数数,以防万一- C
uniq
计算每个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