shell两个数组求交集
时间: 2023-08-09 20:05:00 浏览: 46
可以使用循环遍历两个数组,将相同的元素存储到一个新的数组中,最终得到交集。
以下是一个示例代码:
```bash
#!/bin/bash
# 定义两个数组
arr1=(1 2 3 4 5)
arr2=(3 4 5 6 7)
# 定义一个空数组用于存储交集
intersection=()
# 遍历第一个数组
for i in "${arr1[@]}"
do
# 遍历第二个数组
for j in "${arr2[@]}"
do
# 如果元素相同,则存储到交集数组中
if [ "$i" == "$j" ]; then
intersection+=("$i")
break
fi
done
done
# 输出交集
echo "${intersection[@]}"
```
输出结果为:
```
3 4 5
```
相关问题
shell判断两个数组的结果是否相等
您可以使用shell脚本中的if语句来判断两个数组是否相等。以下是一个示例脚本:
```bash
#!/bin/bash
# 定义两个数组
array1=("apple" "banana" "cherry")
array2=("apple" "banana" "cherry")
# 判断数组长度是否相等
if [ ${#array1[@]} -ne ${#array2[@]} ]; then
echo "数组长度不相等"
exit 1
fi
# 判断数组元素是否相等
for ((i=0; i<${#array1[@]}; i++)); do
if [ "${array1[i]}" != "${array2[i]}" ]; then
echo "数组元素不相等"
exit 1
fi
done
echo "数组相等"
exit 0
```
在上述示例中,我们首先判断两个数组的长度是否相等,如果长度不相等,则可以确定两个数组不相等。然后,我们使用一个循环遍历每个数组元素,如果发现任何不相等的元素,则可以确定两个数组不相等。如果没有发现不相等的元素,则可以确定两个数组相等。
您可以根据需要修改数组的内容,并在运行脚本后查看结果。
shell2个数组 相同的字符都删除
假设有两个数组 `arr1` 和 `arr2`,我们可以使用循环遍历两个数组,对于每个字符在两个数组中都出现过的情况,将其从数组中删除即可。
下面是一个示例代码:
```bash
# 定义两个数组
arr1=("a" "b" "c" "d" "e")
arr2=("c" "d" "e" "f" "g")
# 遍历 arr1 数组中的每个元素
for i in "${arr1[@]}"
do
# 判断当前元素是否在 arr2 数组中出现过
if [[ " ${arr2[*]} " == *" $i "* ]]; then
# 如果出现过,则从两个数组中都将该元素删除
arr1=("${arr1[@]/$i}")
arr2=("${arr2[@]/$i}")
fi
done
# 输出处理后的两个数组
echo "${arr1[@]}"
echo "${arr2[@]}"
```
运行以上代码,输出结果为:
```
a b
f g
```
可以看到,两个数组中相同的字符都被删除了。