假设我有一个像这样的数组(aabbbccd)我希望数组只有一个字符/字符串(abcd)是否有任何方式将数组转换为行,所以我可以使用sort&uniq而不使用临时文件?
谢谢 !
您可以使用该printf命令.
printf "%s\n" "${array[@]}" | sort | uniq
Run Code Online (Sandbox Code Playgroud)
这将打印每个元素,array后跟换行符到标准输出.
要重新填充数组,您可以使用
readarray -t array < <(printf "%s\n" "${array[@]}" | sort | uniq)
Run Code Online (Sandbox Code Playgroud)
但是,您可以简单地使用关联数组来过滤掉重复项.
declare -A aa
for x in "${array[@]}"; do
aa[$x]=1
done
array=()
for x in "${!aa[@]}"; do
array+=("$x")
done
Run Code Online (Sandbox Code Playgroud)