在Powershell Array对象中排序2列以查找差异

时间:2018-10-12 01:22:45

标签: powershell sorting

我有一个采用这种格式的系统。

A_Site      B_Site
----------- -----------
BN6         BIO70      
BY21        BN6        
BY4         BY21       
CBR20       BY4 

有没有办法像这样排序呢?想法是要知道A列中是否缺少站点代码或B列中是否缺少站点代码。

A_Site      B_Site
----------- -----------
BN6         BN6      
BY21        BY21        
BY4         BY4       
CBR20       
            BIO70

2 个答案:

答案 0 :(得分:1)

如果样本输入中的两列存储在单独的数组中,则以下代码将产生所需的输出(PSv3 +):

$arr1 = "BN6", "BY21", "BY4", "CBR20"
$arr2 = "BIO70", "BN6", "BY21", "BY4"

Compare-Object $arr1 $arr2 -IncludeEqual | 
  Select-Object @{ n='A_Site'; e={ if ($_.SideIndicator -in '==', '<=') { $_.InputObject } } }, 
                @{ n='B_Site'; e={ if ($_.SideIndicator -in '==', '=>') { $_.InputObject } } }

答案 1 :(得分:1)

其他方法:

$arr1 = "BN6", "BY21", "BY4", "CBR20"
$arr2 = "BIO70", "BN6", "BY21", "BY4"

$arr1+ $arr2 | select -Unique | %{

    $Value=$_;

    [pscustomobject]@{
    Value=$_
    IsInArray1=(($arr1 | where {$_ -eq $Value} | select -First 1) -ne $null) 
    IsInArray2=(($arr2 | where {$_ -eq $Value} | select -First 1) -ne $null) 
    }

}