在文本文件中,为三个数字数的批计数数

分享于 

2分钟阅读

ubuntu

 

问题:

我有一个文本文件,里面有几百个数字。
例如:


 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/' 是实现你目标最简单的方法。 它是:

  • 你的 umbers,以防万一
  • c 每个 uniq ue的长度
  • sed 是将计数移到每个字符串后面的结果

回答 2:

如果你不需要使用任何其他字符串,那么你可以使用关联 array 或者散列来计算这些数字的值:


awk '{c[$0]++} END {for (i in c) printf"%st%dn", i, c[i]}' numbers.txt



或者


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





文件  文本  TEX  number  bat  DIG  
相关文章