【问题标题】:Compare A and B list and create a C list with B values not in A list in Powershell比较 A 和 B 列表并创建一个 C 列表,其中 B 值不在 Powershell 的 A 列表中
【发布时间】:2021-06-27 10:07:24
【问题描述】:

我有两个列表,A 和 B,我需要 A 列表中不存在的 B 列表的元素在 Powershell 中创建的列表 C 中。 (列表或数组)

A B C
One One Second
Two Two
Three Three
Third Second
Fourth third

在此示例中,C 中有单词 Second,因为它不在 A 列表中。 所以这不是两个列表之间的区别,而是一个对另一个,而不是相反。

我已经测试了Compare-Object 命令,但它会排除不在 B 中但在 A 中的元素以及在 B 中但不在 A 中的元素。这不是我想要的。 我也尝试过这样的事情:

foreach ($elem in $A) { if ($B -contains $elem) { "there is a match" } }

但它没有按我的意愿工作。

我有点迷失了这一点。

【问题讨论】:

标签: arrays list powershell


【解决方案1】:

使用-notin 运算符:

$C = @($B) -notin $A

将可枚举的左操作数提供给像-notin 这样的标量比较运算符会将运算符变成过滤器 - 突然间它就像$B |Where-Object { $_ -notin $A } 一样工作

【讨论】:

  • 不确定我在做什么不同,但我没有看到这种行为。当我做@($B) -notin $A 时,我只会得到True
【解决方案2】:

所以最后我决定使用以下命令:

Compare-Object -IncludeEqual -ReferenceObject $A -DifferenceObject $B

使用侧面指示器,我可以按照自己的方式管理第三张桌子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    相关资源
    最近更新 更多