我有两个清单:
tagged=(a-01 a-02 a-03 a-04 a-06)
merged=(a-01 a-02 a-05)
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个bash解决方案,只打印tagged列表中但不在merged((a-03 a-04 a-06))中的那些元素.
我一直试图迭代这两个列表,但我失败了.我坚信bash有一些偷偷摸摸的方式来解决它.
您可以使用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
Run Code Online (Sandbox Code Playgroud)
要将结果存储在数组中:
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")'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |