Linux 如何在Bash中实现两个数组的并集?
我有两个数组,比如:Linux 如何在Bash中实现两个数组的并集?,linux,bash,shell,Linux,Bash,Shell,我有两个数组,比如: arr1=("one" "two" "three") arr2=("two" "four" "six") 在Bash中合并这两个数组的最佳方法是什么?首先,合并数组: arr3=("${arr1[@]}" "${arr2[@]}") 然后,应用post提供的解决方案来消除重复数据: # Declare an associative array declare -A arr4 # Store the values of arr3 in arr4 as keys. for
arr1=("one" "two" "three")
arr2=("two" "four" "six")
在Bash中合并这两个数组的最佳方法是什么?首先,合并数组:
arr3=("${arr1[@]}" "${arr2[@]}")
然后,应用post提供的解决方案来消除重复数据:
# Declare an associative array
declare -A arr4
# Store the values of arr3 in arr4 as keys.
for k in "${arr3[@]}"; do arr4["$k"]=1; done
# Extract the keys.
arr5=("${!arr4[@]}")
这假设bash 4+。在
bash
4之前
while read -r; do
arr+=("$REPLY")
done < <( printf '%s\n' "${arr1[@]}" "${arr2[@]}" | sort -u )
读取时-r;做
arr+=(“$REPLY”)
完成<实际并集(无重复)或只是将两个数组连接起来?在zsh中,实际并集(无重复)可以只使用typeset-U arr
,非常确定在bash中没有这么简单的方法。@Kevin如何使用typeset-U arr
?@denysdovhantypeset-U arr;arr=(a b a c);echo$arr#打印一个bc
。无需arr3
:只需在“${arr1[@]}”“${arr2[@]}”中为k使用。