목록에서 발생 횟수를 계산한 다음 발생 횟수를 내림차순으로 정렬하려면 어떻게 해야 합니까?

목록에서 발생 횟수를 계산한 다음 발생 횟수를 내림차순으로 정렬하려면 어떻게 해야 합니까?

1601개의 행이 있는 목록이 있고 각 행에서 필드 5에 다른 값이 발생하는 횟수를 계산하는 데 관심이 있습니다.

이것이 내가 지금까지 가지고 있는 것입니다:

awk '{print$5}' FILE  | sort | uniq -c

이것이 나에게 제공하는 것은 고유 값 목록과 해당 개수입니다. 하지만 나는 이 목록을 정렬하고 싶습니다. 난 계속 보고 있어답변키와 값에 대해 논의하고 있지만 이를 제 경우에 어떻게 적용해야 할지 모르겠습니다.

미리 도움을 주셔서 감사합니다.

답변1

sort -b -n파이프라인의 끝부분(파이프라인의 다른 단계)에서 이 누락되었습니다.

awk '{ print $5 }' FILE  | sort | uniq -c | sort -b -n

sort -b -n파이프라인의 초기 단계에서 생성된 행은 숫자로 정렬됩니다(선행 공백은 무시됨). 두 줄의 시작 부분에 동일한 번호가 있으면 줄의 사전순 정렬이 수행됩니다.

답변2

열별로 다시 정렬하면 됩니다. 첫 번째 열(발생 횟수)을 기준으로 정렬하려면 -k1을 사용하고 두 번째 열(값)을 기준으로 정렬하려면 -k2를 사용합니다.

awk '{print $5}' FILE | sort | uniq -c | sort -k1   # Sort by ascending occurrences
awk '{print $5}' FILE | sort | uniq -c | sort -k2   # Sort by ascending values

내림차순으로 정렬해야 하는 경우(-r):

awk '{print $5}' FILE | sort | uniq -c | sort -k1 -r   # Sort by descending occurrences
awk '{print $5}' FILE | sort | uniq -c | sort -k2 -r   # Sort by descending values

관련 정보