2017-06-22 29 views
-1

我在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://stackoverflow.com/questions/44633430/display-only-the-columns-needed-powershell)中花了很多評論來理解charlo想要改變每個單獨欄目中的條目,以便不再有空白。 – LotPings

回答

2

生成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