我有一个数字列表:
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]
}
'