logs.txt
繰り返し数を含むファイルがあります。
1 QWE
1 ASD
1 QWE
1 QWE
1 QWE
1 qwe
12
22 qwe
2 aaa
2 vcc
2 xxx
4 asa
44 qwe
4 gfd
4 bcx
5
6 kuy
7
76 lol
5
4 ggg
23
2 ttt
34
5
5
76
5
6
78
99
8
88
7
6
88
88
88
88 wer
88 tyu
99 dsf
78 dfg
78 fgh
78
78 qwe
6 qwe
5
22 qwe
分類する必要があります。ですから、一番高い人が上になければなりません。たとえば、1回は20回繰り返され、2回は44回繰り返されます...
20 1
44 2
1 3
5 4
.....
次のコマンドを実行します。
awk '{print $1}' logs.txt >> log2.txt
cat log2.txt | uniq -c >> log3.txt
sort -n srp >> log4.txt
tac log4.txt > log5.txt
それは私のために働いたが、時間がかかった!実行のためにすべてのコマンドをファイルに保存したいと思います。スクリプトを作成する必要があります!
答え1
必要なものは次のとおりです。
sort -rnk1 file | awk '{print $1}' | uniq -c | sort -nk2
または、最初のフィールドに数字のみがある場合:
sort -rnk1 file | tr -cs 0-9 '[\n*]' | uniq -c | sort -nk2
答え2
awk
以下は、唯一のベースに基づく別のソリューションですsort
。
awk '{a[$1]++} END{for(i in a)print a[i],i}' logs.txt | sort -k2n
答え3
GNUでは、配列のawk
巡回順序を制御できますPROCINFO["sorted_in"]
。
awk 'BEGIN{PROCINFO["sorted_in"] = "@val_num_desc"}; {a[$1]++};
END{for (k in a) print k, a[k]}' logs.txt