我正在尝试根据另一个数组中的唯一值创建一个新的变量数组,但没有得到所需的结果。
原始数组
# 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
Run Code Online (Sandbox Code Playgroud)
我正在使用的命令
uniq=($(printf "%s\n" "${owner[@]}" | sort -u))
Run Code Online (Sandbox Code Playgroud)
问题(它将所有唯一值存储为索引 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]}
#
Run Code Online (Sandbox Code Playgroud)
有人知道从该数组中获取唯一值的更好方法吗?
在 SmartOS 上使用 bash(类似于 Solaris)
编辑
我也尝试了以下方法,它将每个值存储在它自己的索引号下,但它不会删除重复的值:
uniq=($(printf "%s " "${owner[@]}" | sort -u))
Run Code Online (Sandbox Code Playgroud)
uniq=($(printf "%s\n" "${owner[@]}" | sort -u | tr '\n' ' '))
Run Code Online (Sandbox Code Playgroud)
应该做。
或者,如评论中所述,修改您的 IFS。