数字のリストがあります。
2
1
3
2
2
2
1
まず、ファイルログがあります。 IDをすべて抽出しました。では、各数の発生回数をどのように計算して次のように表示できますか? (最初は数字、2番目はその数が表示される回数です)
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]
}
'