powershell比较2个数组输出如果匹配

时间:2014-06-18 16:25:32

标签: powershell

我有两个数组,我想比较

的项目

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

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

1 个答案:

答案 0 :(得分:4)

One-liner:

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