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