Bash - 배열 및 고유 정렬

Bash - 배열 및 고유 정렬

비슷한 질문이에요이것

단어 개수를 계산하고 싶지만 이번에는 배열을 사용합니다.

예를 들어, 이라는 bash 배열에 다음 IP가 있습니다 IPS.

IPS=("1.1.1.1" "5.5.5.5" "3.3.3.3" "1.1.1.1" "2.2.2.2" "5.5.5.5" "1.1.1.1")

내용을 읽어보면:

user@server~$ "${IPS[*]}"
1.1.1.1 5.5.5.5 3.3.3.3 1.1.1.1 2.2.2.2 5.5.5.5 1.1.1.1

나는 다음과 같은 것을 원합니다 :

3 1.1.1.1
2 5.5.5.5
1 3.3.3.3
1 2.2.2.2

답변1

노력하다:

printf '%s\n' "${IPS[@]}" |sort |uniq -c |sort -rn |sed 's/^ *//'
3 1.1.1.1
2 5.5.5.5
1 3.3.3.3
1 2.2.2.2

관련된:

답변2

연관 배열을 사용하면 IPS 배열을 반복할 때 증가하는 키로 다양한 IPS를 저장할 수 있습니다.

#!/bin/bash
IPS=("1.1.1.1" "5.5.5.5" "3.3.3.3" "1.1.1.1" "2.2.2.2" "5.5.5.5" "1.1.1.1")
declare -A arr
for ip in ${IPS[@]};
do
        ((arr[${ip}]++))
done
for k in ${!arr[@]};
do
        echo "${arr[$k]} $k"
done | sort -rn

관련 정보