我和这里的问题差不多。
我有一个包含aa ab aa ac aa ad等的数组。现在,我想从该数组中选择所有唯一元素。思想,这将是简单的用sort | uniq或sort -u因为他们在其他问题中提到,但没有在数组中改变…的代码是:
aa ab aa ac aa ad
sort | uniq
sort -u
echo `echo "${ids[@]}" | sort | uniq`
我究竟做错了什么?
有点hacky,但是应该这样做:
echo "${ids[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '
要将排序后的唯一结果保存回数组,请执行数组分配:
sorted_unique_ids=($(echo "${ids[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
如果您的外壳支持herestrings(bash应该),则可以echo通过将其更改为以下内容来节省进程:
bash
echo
tr ' ' '\n' <<< "${ids[@]}" | sort -u | tr '\n' ' '
输入:
ids=(aa ab aa ac aa ad)
输出:
aa ab ac ad
说明:
"${ids[@]}"
@
tr ' ' '\n'
tr '\n' ' '
$(...)
tr ' ' '\n' <<< "${ids[@]}"
echo "${ids[@]}" | tr ' ' '\n'