숫자 목록이 있습니다.
2
1
3
2
2
2
1
먼저 파일 로그가 있습니다. 아이디를 모두 추출했습니다. 이제 각 숫자의 발생 횟수를 어떻게 계산하고 다음과 같이 표시할 수 있습니까? (첫 번째는 숫자, 두 번째는 해당 숫자가 나타나는 횟수입니다)
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]
}
'