【问题标题】:powershell compare 2 arrays output if match如果匹配,powershell比较2个数组输出
【发布时间】:2014-06-18 16:25:31
【问题描述】:

我有两个要比较的数组

我有数组 A [hi,no,lo,yes,because] 和数组 B [mick,tickle,fickle,pickle,ni,hi,no,lo,yes,because]

所以我想搜索 A 中的每个项目并与 B 中的每个项目进行比较,如果匹配则返回“有匹配”

【问题讨论】:

  • 你试过什么?你遇到了什么错误?请展示您所做的努力,以便我们可以帮助解决问题,我们不会在您不付出任何努力的情况下分发代码。
  • 我不确定你在问什么。您想知道 A 是否在 B 中找到,并且项目按顺序排列,还是您想知道所有项目是否都在 B 中,但不一定按顺序排列?或者您想知道这些数组是否相同且按顺序排列?更具体。

标签: powershell


【解决方案1】:

单线:

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

但是统计匹配可能更方便:

$c = 0; foreach ($elem in $A) { if ($B -contains $elem) { $c++ } }
"{0} matches found" -f $c

或者如果你想检查数组是否相交:

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

或者如果你想检查 $A 是否是 $B 的子集:

$c = 0; foreach ($elem in $A) { if ($B -contains $elem) { $c++ } }
if ($c -eq $A.Count) { '$A is a subset of $B' }

最后是 Compare-Object cmdlet,它实际上比上述所有方法都好。示例(仅输出两个数组中都存在的元素):

Compare-Object -IncludeEqual -ExcludeDifferent $A $B

【讨论】:

    猜你喜欢
    • 2020-09-22
    • 2015-04-15
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多