得到许多列出了相同的输出使用PowerShell

问题描述:

我在ISE的蓝色部分显示此:得到许多列出了相同的输出使用PowerShell

 
Column1 Column2 Column3 Column4 
------- ------- ------- ------- 
infra-98 infra-852 infra-44 infra-99 
infra-62 infra-85 infra-8 infra-23 
     infra-8 infra-852 infra-10 
     infra-55   infra-70 


Column1 Column2 Column3 Column4 
------- ------- ------- ------- 
infra-1 infra-85 infra-2  infra-99 
infra-98 infra-55 infra-44 infra-23 
infra-2    infra-1  infra-10 
infra-62       infra-70 

csv文件(EXCEL表)(注:星星是匹配的细胞:

 
Column1  Column2 Column3  Column4 
*infra-1* infra-85 *infra-2* infra-99 
infra-98  infra-85 infra-44 infra-23 
*infra-5* infra-8 *infra-1* infra-10 
*infra-2* infra-55 infra-8  infra-70 
infra-62 *infra-5* infra-852 *infra-5* 
*infra-6* *infra-6* infra-853 *infra-6* 

首先,有四个列表显示与Column1不匹配的单元格,然后在第二个列表中我们对Column2有相同的事情,问题是我不知道该怎么做。人们告诉我这是可行的,但很复杂,是否有另外的选择来创建这个?

当前代码允许以除去未与第一列匹配细胞:

$csv = Import-Csv .\test1.csv -Delimiter ';' 

$ref = @($csv.Column1) 
foreach ($row in $csv) { 
    foreach ($col in 'Column2', 'Column3', 'Column4') { 
    if ($ref -contains $row.$col) { $row.$col = '' } 
    } 
} 


$csv | Select-Object Column1,Column2,Column3,Column4 
+0

我只想在那里有输出,但我目前的代码是不是这个,我不知道该做什么2个表必须在同一个输出 – charlo

+0

是的,因为我不知道应该是什么我确实能够显示预期的输出。我只是想通过各种手段来获得这个输出。我试图在问题中解释它 – charlo

+0

它在[上一个问题](https://*.com/questions/44633430/display-only-the-columns-needed-powershell)中花了很多评论来理解charlo想要改变每个单独栏目中的条目,以便不再有空白。 – LotPings

生成4个独立的阵列,每列一个,然后加入:

$csv = Import-Csv .\1.csv -Delimiter ';' 

$ref = [ordered]@{} 
$columns = foreach ($i in 0..3) { ,[Collections.ArrayList]@() } 

foreach ($row in $csv) { 
    $value = $row.Column1 
    $ref[$value] = $true 
    $columns[0].add($value) >$null 
} 

foreach ($row in $csv) { 
    $i = 1 
    foreach ($col in 'Column2', 'Column3', 'Column4') { 
     $value = $row.$col 
     if (!$ref[$value]) { 
      $columns[$i].add($value) >$null 
     } 
     $i++ 
    } 
} 

$maxLine = ($columns | select -expand Count | measure -Maximum).Maximum - 1 
$csv = foreach ($i in 0..$maxLine) { 
    [PSCustomObject]@{ 
     Column1 = $columns[0][$i] 
     Column2 = $columns[1][$i] 
     Column3 = $columns[2][$i] 
     Column4 = $columns[3][$i] 
    } 
} 

这是一个通用的例子,所以你可能需要调整它。

+0

有些单元无缘无故地被拆除。 – charlo

+0

您是否试图将代码添加到那里? – charlo

+0

我知道,但这只是一个问题。我的目标是两部分的复合。首先删除mtching单元格,然后在同一输出中显示许多表格/列表或其他内容,这就是我所要求的。 – charlo