假设我有一个像这样的数组 (a a b b b c c d) 我希望数组只有一个字符/字符串(a b c d) 是否有任何方式将数组转换为行,所以我可以使用sort& uniq没有临时文件?
谢谢!
答案 0 :(得分:5)
您可以使用printf
命令。
printf "%s\n" "${array[@]}" | sort | uniq
这将打印array
的每个元素,后跟新行到标准输出。
要重新填充数组,您可以使用
readarray -t array < <(printf "%s\n" "${array[@]}" | sort | uniq)
但是,您可以简单地使用关联数组来过滤掉重复数据。
declare -A aa
for x in "${array[@]}"; do
aa[$x]=1
done
array=()
for x in "${!aa[@]}"; do
array+=("$x")
done
答案 1 :(得分:0)
好奇心,:
arr=(a a b b b c c d)
echo "${arr[@]}" | xargs -n1 | sort -u
打印
a
b
c
d
和
echo "${arr[@]}" | xargs -n1 | sort -u | xargs
打印
a b c d
答案 2 :(得分:-2)
for x in a a b b b c c d; do echo -e $x; done | sort | uniq