2017-09-02 12 views
0

一般的には、私は多少スクリプティングに新しいです。私はCSVファイルを持っています。このCSVファイルは、データをインポートして変更することでより良い形式で表示されます。
私の質問は、私は(私は推測)指定した列のすべての行にforeachループをしたいです、そして、データが一定の基準に一致しない場合:Powershell Import-CSV条件に基づいて新しい行を作成する

  1. コピーして新しい行へ行全体を(保持します他のすべてのデータは 行にあります)。
  2. 私は基本的にimport-csv $fileをやっている「列C」

の値と「列B」の値を置き換えます。私は後でそれをエクスポートします。

ここに例があります:基本的にはTask2をTask1列に移動したい場合は「 - 」以外のデータがあり、Task 2列は無視できます。これは、方法かもしれない比較的小さなCSVファイルの場合

ID, TASK1, TASK2 
123, A,  --  
456, B,  --  
789, C,  D,  

But I want it to look like this: 

ID, TASK1, TASK2 
123, A , --  
456, B,  --  
789, C,  D,  
789, D,  D,     
+1

あなたが持っているコードを投稿できますか? – ShanayL

+0

現時点では本当に$ CSV = import-csv です。 – Tommy24

答えて

-1

その他の方法:

$data=import-csv "C:\temp\test.txt" 
$data + ($data | where TASK2 -ne "--" | %{$_.TASK1=$_.TASK2;$_}) 
+0

上記のメソッドはTask1列の元のデータを削除したので、新しい行を追加して現在の行に影響を与えないようにする必要があると思います。 – Tommy24

+0

私のコードは、あなたがun exampleを与えた結果を与えます。もっとよく説明してください;) – Esperento57

+0

実際に私はそれを取り戻します。新しいpsオブジェクトを作成するだけで動作します。ありがとう! – Tommy24

0

($ CSVは+ = VARたびを再作成):

## Q:\Test\2017\09\03\SO_46018965.ps1 
$CSV = import-csv 'test.csv' 
foreach ($Row in $CSV){ 
    if ($Row.TASK1 -eq 'C'){ 
     $NewRow=[PSCustomObject]@{ 
      ID = $Row.ID 
      TASK1 = $Row.TASK2 
      TASK2 = $Row.TASK2} 
     $CSV+=$NewRow 
    } 
} 
$CSV 

出力例:

Import-csvは私にこれを提供します

ID TASK1 TASK2 
-- ----- ----- 
123 A  -- 
456 B  -- 
789 C  D 
789 D  D 
+0

これは、ありがとう! – Tommy24

関連する問題