比较并丢弃bash中数组中的元素

问题描述 投票:0回答:1

我有两个排序的数组list1=( a b c d)list2=( a b d)

假设list1是一个常量列表,并且list2是在脚本执行期间创建的。我想将list2元素与list1进行比较,只丢弃list2中不在list1中的那些值。

示例:如果list2=(a b d e f),那么我应该将list2更新为list2=(a b),因为list1中没有(d e f)

bash
1个回答
1
投票
list1=( a b c d)
list2=( a b d)
list2=($(echo ${list1[*]} ${list2[*]} | tr " " "\n" |sort | uniq -d))

echo ${list2[*]}

这里,我将2个列表转换为字符串,用空格分隔,对值进行排序,然后查找重复项。然后将重复项重新分配给list2数组

© www.soinside.com 2019 - 2024. All rights reserved.