스크립트를 사용하여 파일의 데이터를 어떻게 정렬할 수 있나요?

스크립트를 사용하여 파일의 데이터를 어떻게 정렬할 수 있나요?

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

관련 정보