使用 BEGIN/END 语句计算出现次数

使用 BEGIN/END 语句计算出现次数

我有一个数字列表:

2
1
3
2
2
2
1

首先我有一个文件日志。我把所有的ID都提取出来了。现在,我如何计算每个数字的出现次数并像这样显示它? (第一个是数字,第二个数字是该数字出现的次数)

2,4
1,2
3,1

我可能有一个想法:

awk -F'|' 'BEGIN{print "count", "lineNum"}{print gsub(/t/,"") "\t" NR}' file

答案1

echo "$numbers" | sort | uniq -c | awk -v OFS=, '{print $2,$1}' | sort -t, -k2nr

如果您对其工作原理有疑问,最自学的分解方法就是分段执行:

echo "$numbers" | sort
echo "$numbers" | sort | uniq -c 
# and so on

当然,请阅读 sort 和 uniq 的手册页


使用 GNU awk,您可以

echo "$numbers" | gawk '
  {count[$1]++}
  END {
    PROCINFO["sorted_in"] = "@val_num_desc"
    OFS = ","
    for (thing in count) print thing, count[thing]
  }
'

相关内容