연관 배열을 정렬하고 키를 보존하는 방법은 무엇입니까?

연관 배열을 정렬하고 키를 보존하는 방법은 무엇입니까?

파일 이름을 키로, 숫자 값을 값으로 가진 배열이 있습니다.

MYARRAY[00001.jpg] = 31
MYARRAY[00002.jpg] = 200
MYARRAY[00003.jpg] = 98

값별로 정렬되도록 정렬해야 합니다. 내가하고있는 것

IFS=$'\n' SORTED=($(sort <<<"${MYARRAY[*]}"))

그런데 열쇠를 잃어버려서 지금은 디지털키만 남아있습니다.

원하는 출력은

00001.jpg:31
00003.jpg:98
00002.jpg:200

이런 식으로 키를 어떻게 보존할 수 있나요?

답변1

키에 콜론이나 줄 바꿈이 포함되어 있지 않고 값에 줄 바꿈이 포함되어 있지 않다고 가정합니다.

for key in "${!MYARRAY[@]}"; do
  printf '%s:%s\n' "$key" "${MYARRAY[$key]}"
done | sort -t : -k 2n

값에 따라 지정된 순서대로 키가 필요한 경우 출력을 다시 읽어보세요.

IFS=$'\n'; set -f
sorted_keys=($(
    for key in "${!MYARRAY[@]}"; do
      printf '%s:%s\n' "$key" "${MYARRAY[$key]}"
    done | sort -t : -k 2n | sed 's/:.*//'))
unset IFS; set +f

관련 정보