Arrays bash中的inclusive和exclusive数组
我在这里的第一篇文章,让我们看看这是怎么回事 处理一个我有多个“主机列表”的问题。一套用于linux,一套用于windows,一套用于打印机 我还列出了目前正在监测的项目 我一直在编写一些代码,试图统一主机列表,然后获得该列表和当前监控列表的差异 我在这里找到了一些不错的代码:Arrays bash中的inclusive和exclusive数组,arrays,bash,Arrays,Bash,我在这里的第一篇文章,让我们看看这是怎么回事 处理一个我有多个“主机列表”的问题。一套用于linux,一套用于windows,一套用于打印机 我还列出了目前正在监测的项目 我一直在编写一些代码,试图统一主机列表,然后获得该列表和当前监控列表的差异 我在这里找到了一些不错的代码: Array1=( "key1" "key2" "key3" "key4" "key5" "key6" "key7" "key8" "key9" "key10" ) Array2=( "key1" "key2" "key3
Array1=( "key1" "key2" "key3" "key4" "key5" "key6" "key7" "key8" "key9" "key10" )
Array2=( "key1" "key2" "key3" "key4" "key5" "key6" )
Array3 =diff(Array1, Array2)
阵列3理想情况下应为:
数组3=(“键7”“键8”“键9”“键10”)
这让我列出了需要添加的内容,效果非常好
假设Array2包含一个值为“key11”的元素
如果我使用相同的diff,我会得到所有以前的值和key11
Array1=( "key1" "key2" "key3" "key4" "key5" "key6" "key7" "key8" "key9" "key10" )
Array2=( "key1" "key2" "key3" "key4" "key5" "key6" "key11")
Array3 =diff(Array1, Array2)
这个输出
图例11图例10
我想我需要做两件事:
我该怎么做?我可以看到这一点的逻辑,而不是代码。非常感谢您的帮助。请不要让我整个周末都在痛苦中度过。你可以得到两个数组之差的数组,如下所示:
Array3=($(sort <(printf "%s\n" "${Array1[@]}") <(printf "%s\n" "${Array2[@]}") | uniq -u))
Array3=($(排序Array3=diff(Array1,Array2)
应该做什么?因为它肯定不是bash。你是从问题中复制了代码,而不是使用其中一个答案吗?你需要bash的原因是什么?在支持set
s的语言中,这可能更容易实现。例如,在python中,你可以只做set(Array1)-set(Array2)
如果每个键列表都在单独的文件中(或者可以这样做),这对于comm(1)
命令来说可能是一项简单的工作。请阅读详细手册。@Jens如果需要处理数据(而不仅仅是运行其他程序),bash
(或任何shell语言),您可以使用process sub并打印阵列这是一个错误的选择。这更容易理解,解释也很好。但是我如何才能得到一个列表中的东西而不是另一个?