如何在bash中对数组进行排序并获取唯一值?

如何在bash中对数组进行排序并获取唯一值?,bash,awk,Bash,Awk,我是bash脚本的新手。。。我试图将一个数组中的唯一值排序并存储到另一个数组中。 例如: 我需要 unique_sorted_list=('b','c','a') 我试了两件事,但都没帮上忙 sorted_ids=($(for v in "${ids[@]}"; do echo "$v";done| sort| uniq| xargs)) 或 你们能在这方面帮助我吗…试试: $ list=(a b b b c c) $ unique_sorted_list=($(printf "%s\n"

我是bash脚本的新手。。。我试图将一个数组中的唯一值排序并存储到另一个数组中。 例如:

我需要

unique_sorted_list=('b','c','a')
我试了两件事,但都没帮上忙

sorted_ids=($(for v in "${ids[@]}"; do echo "$v";done| sort| uniq| xargs))

你们能在这方面帮助我吗…

试试:

$ list=(a b b b c c)
$ unique_sorted_list=($(printf "%s\n" "${list[@]}" | sort -u))
$ echo "${unique_sorted_list[@]}"
a b c
根据评论更新:
从第一次尝试中拿出
| xargs
。嗨,凯文,试过了。。但我看不出有什么不同。@kevin。我现在明白了…一切都很好…它可以归类为(abc),但我需要(bca),因为它有b是c2的三倍和a的一次。。这是我想问的问题,你的案例是有效的,但是:-(在我的案例中它是('a','a','a','a','b','b')不是('a','b','b'))…因为引用它使每个值都是唯一的,并打印相同的数组…我猜实际上我的数组包含文件的用户名…这就是我在$fList中获取文件的方式;do dList+=”$(ls-lt$file | awk'{print$3}')“完成------从数据列表中我需要得到排序,唯一array@Karthik在bash中,数组元素之间用空格隔开。@Karthik…太棒了!它工作得很好!谢谢你,伙计。
sorted_ids=$(echo "${ids[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')
$ list=(a b b b c c)
$ unique_sorted_list=($(printf "%s\n" "${list[@]}" | sort -u))
$ echo "${unique_sorted_list[@]}"
a b c
$ uniq=($(printf "%s\n" "${list[@]}" | sort | uniq -c | sort -rnk1 | awk '{ print $2 }'))