파일 이름을 키로, 숫자 값을 값으로 가진 배열이 있습니다.
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