This question already has answers here:
Compare/Difference of two arrays in bash
(7个答案)
三年前关闭。
我有两张单子:
我正在寻找一个bash解决方案来只打印那些在
我一直在尝试遍历这两个列表,但都失败了。
我坚信巴什有办法解决这个问题。
要将结果存储在数组中,请执行以下操作:
(7个答案)
三年前关闭。
我有两张单子:
tagged=(a-01 a-02 a-03 a-04 a-06)
merged=(a-01 a-02 a-05)
我正在寻找一个bash解决方案来只打印那些在
tagged
列表中但不在merged
中的元素。我一直在尝试遍历这两个列表,但都失败了。
我坚信巴什有办法解决这个问题。
最佳答案
您可以将grep -vf
与进程替换一起使用:
tagged=(a-01 a-02 a-03 a-04 a-06)
merged=(a-01 a-02 a-05)
grep -vf <(printf "%s\n" "${merged[@]}") <(printf "%s\n" "${tagged[@]}")
a-03
a-04
a-06
要将结果存储在数组中,请执行以下操作:
diffarr=($(grep -vf <(printf "%s\n" "${merged[@]}") <(printf "%s\n" "${tagged[@]}")))
declare -p diffarr
declare -a diffarr='([0]="a-03" [1]="a-04" [2]="a-06")'
08-28 10:47