Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays bash中的inclusive和exclusive数组_Arrays_Bash - Fatal编程技术网

Arrays bash中的inclusive和exclusive数组

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

我在这里的第一篇文章,让我们看看这是怎么回事

处理一个我有多个“主机列表”的问题。一套用于linux,一套用于windows,一套用于打印机

我还列出了目前正在监测的项目

我一直在编写一些代码,试图统一主机列表,然后获得该列表和当前监控列表的差异

我在这里找到了一些不错的代码:

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

我想我需要做两件事:

  • 一张清单,上面列出了所有我想要的东西=2但不是2=一,

  • 一张清单,上面列出了2件事=1但不是1=二,

  • 我希望解释这样一个事实,即这些内容是从一个CSV中填写的,我不控制该CSV的内容,并且每个主机列表的命名约定的变化意味着数组的顺序/编号/等将是未知的。
    我该怎么做?我可以看到这一点的逻辑,而不是代码。非常感谢您的帮助。请不要让我整个周末都在痛苦中度过。

    你可以得到两个数组之差的数组,如下所示:

    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并打印阵列这是一个错误的选择。这更容易理解,解释也很好。但是我如何才能得到一个列表中的东西而不是另一个?