다른 배열의 고유한 값을 기반으로 새로운 변수 배열을 만들려고 하는데 원하는 결과를 얻지 못합니다.
원래 배열
# echo ${owner[*]}
390920ad-2858-e651-a4af-a9eaa6acaebb 390920ad-2858-e651-a4af-a9eaa6acaebb e14c2413-7179-44f8-dfc3-b8624dcb10bb 390920ad-2858-e651-a4af-a9eaa6acaebb e14c2413-7179-44f8-dfc3-b8624dcb10bb 390920ad-2858-e651-a4af-a9eaa6acaebb e14c2413-7179-44f8-dfc3-b8624dcb10bb 390920ad-2858-e651-a4af-a9eaa6acaebb 390920ad-2858-e651-a4af-a9eaa6acaebb 390920ad-2858-e651-a4af-a9eaa6acaebb e14c2413-7179-44f8-dfc3-b8624dcb10bb 390920ad-2858-e651-a4af-a9eaa6acaebb e14c2413-7179-44f8-dfc3-b8624dcb10bb 390920ad-2858-e651-a4af-a9eaa6acaebb 390920ad-2858-e651-a4af-a9eaa6acaebb 390920ad-2858-e651-a4af-a9eaa6acaebb 390920ad-2858-e651-a4af-a9eaa6acaebb 0a452389-5ed2-e46f-ad15-cc538c82650d 4232f23d-ed48-4b14-c0ea-aa911fd24920 8ee1b05f-2473-4c37-bfc5-ae393921b939
내가 사용하는 명령
uniq=($(printf "%s\n" "${owner[@]}" | sort -u))
질문(모든 고유 값을 인덱스 0 아래에 단일 값으로 저장합니다)
# echo ${uniq[0]}
0a452389-5ed2-e46f-ad15-cc538c82650d
390920ad-2858-e651-a4af-a9eaa6acaebb
4232f23d-ed48-4b14-c0ea-aa911fd24920
8ee1b05f-2473-4c37-bfc5-ae393921b939
e14c2413-7179-44f8-dfc3-b8624dcb10bb
# echo ${uniq[1]}
#
이 배열에서 고유한 값을 얻는 더 좋은 방법을 아는 사람이 있나요?
SmartOS에서 bash 사용(Solaris와 유사)
편집하다
또한 각 값을 자체 인덱스 번호 아래에 저장하는 다음을 시도했지만 중복 값은 제거하지 않습니다.
uniq=($(printf "%s " "${owner[@]}" | sort -u))
답변1
uniq=($(printf "%s\n" "${owner[@]}" | sort -u | tr '\n' ' '))
해야 할 것.
또는 설명에서 언급한 대로 IFS를 수정하세요.
답변2
echo "${owner[*]}"
귀하의 브랜드 사용하나긴 끈.
당신은 그것을 사용했어야 합니다 printf '%s\n' "${owner[@]}"
.
공백(또는 새 줄)이 질문에 붙여넣은 문자열의 구분 기호인 경우 (게시물에서 복사하여 붙여넣기)를 사용하여 원래 배열을 복원할 수 있습니다.
$ owner=(390920ad-2858-e651-a4af-a9eaa6acaebb 390920ad-2858-e651-a4af-a9eaa6acaebb e14c2413-7179-44f8-dfc3-b8624dcb10bb 390920ad-2858-e651-a4af-a9eaa6acaebb e14c2413-7179-44f8-dfc3-b8624dcb10bb 390920ad-2858-e651-a4af-a9eaa6acaebb e14c2413-7179-44f8-dfc3-b8624dcb10bb 390920ad-2858-e651-a4af-a9eaa6acaebb 390920ad-2858-e651-a4af-a9eaa6acaebb 390920ad-2858-e651-a4af-a9eaa6acaebb e14c2413-7179-44f8-dfc3-b8624dcb10bb 390920ad-2858-e651-a4af-a9eaa6acaebb e14c2413-7179-44f8-dfc3-b8624dcb10bb 390920ad-2858-e651-a4af-a9eaa6acaebb 390920ad-2858-e651-a4af-a9eaa6acaebb 390920ad-2858-e651-a4af-a9eaa6acaebb 390920ad-2858-e651-a4af-a9eaa6acaebb 0a452389-5ed2-e46f-ad15-cc538c82650d 4232f23d-ed48-4b14-c0ea-aa911fd24920 8ee1b05f-2473-4c37-bfc5-ae393921b939)
인쇄 가능:
$ printf '%s\n' "${owner[@]}"
390920ad-2858-e651-a4af-a9eaa6acaebb
390920ad-2858-e651-a4af-a9eaa6acaebb
e14c2413-7179-44f8-dfc3-b8624dcb10bb
390920ad-2858-e651-a4af-a9eaa6acaebb
e14c2413-7179-44f8-dfc3-b8624dcb10bb
390920ad-2858-e651-a4af-a9eaa6acaebb
e14c2413-7179-44f8-dfc3-b8624dcb10bb
390920ad-2858-e651-a4af-a9eaa6acaebb
390920ad-2858-e651-a4af-a9eaa6acaebb
390920ad-2858-e651-a4af-a9eaa6acaebb
e14c2413-7179-44f8-dfc3-b8624dcb10bb
390920ad-2858-e651-a4af-a9eaa6acaebb
e14c2413-7179-44f8-dfc3-b8624dcb10bb
390920ad-2858-e651-a4af-a9eaa6acaebb
390920ad-2858-e651-a4af-a9eaa6acaebb
390920ad-2858-e651-a4af-a9eaa6acaebb
390920ad-2858-e651-a4af-a9eaa6acaebb
0a452389-5ed2-e46f-ad15-cc538c82650d
4232f23d-ed48-4b14-c0ea-aa911fd24920
8ee1b05f-2473-4c37-bfc5-ae393921b939
그런 다음 필요에 따라 필터링합니다.
$ printf '%s\n' "${owner[@]}" | sort -u
0a452389-5ed2-e46f-ad15-cc538c82650d
390920ad-2858-e651-a4af-a9eaa6acaebb
4232f23d-ed48-4b14-c0ea-aa911fd24920
8ee1b05f-2473-4c37-bfc5-ae393921b939
e14c2413-7179-44f8-dfc3-b8624dcb10bb
var uniq에서 값 배열을 얻으려면:
$ uniq=( $(printf '%s\n' "${owner[@]}" | sort -u) )
위의 모든 작업은 기본 IFS가 변경되므로 작동합니다.
IFS가 변경되면 결과도 변경될 수 있습니다.