回答編集履歴

2 追記

Zuishin

Zuishin score 22501

2017/03/03 12:56  投稿

Import-Csv, Export-Csv という便利なコマンドレットがありますよ。
仮に CSV が abc.csv という名前で、次のような内容だったとします。
```
abc,def,ghi
0,1,2
3,4,5
```
この時、このように読み込みます。
「PowerShell>」はプロンプトです。
```
PowerShell> $a = Import-Csv -LiteralPath abc.csv -Encoding UTF8
PowerShell> $a
abc def ghi
--- --- ---
0  1  2
3  4  5
```
加工します。
```
PowerShell> $a |% { if ($_.abc -eq 0) { $_.abc = '99' }; $_ }
abc def ghi
--- --- ---
99 1  2
3  4  5
```
読み込み、加工し、保存します。
```
PowerShell> Import-Csv -LiteralPath abc.csv -Encoding UTF8 |
>> % { if ($_.abc -eq 0) { $_.abc = '99' }; $_ } |
>> Export-Csv -LiteralPath dst.csv -Encoding UTF8 -NoTypeInformation
```  
 
追記  
PowerShell の条件式  
|||  
|:--|--:|  
|論理和|-or|  
|論理積|-and|  
|同値判定|-eq|  
 
例: 読み込んだレコードのフィールド abc が空文字で def が 2 かどうかを判定し、真なら abc を全角空白に差し替える  
```  
if ($_.abc -eq "" -and $_.def -eq "2")  
{  
   $_.abc = "<全角空白>"  
}  
```
1 修正

Zuishin

Zuishin score 22501

2017/03/03 12:46  投稿

Import-Csv, Export-Csv という便利なコマンドレットがありますよ。
仮に CSV が abc.csv という名前で、次のような内容だったとします。
```
abc,def,ghi
0,1,2
3,4,5
```
この時、このように読み込みます。
「PowerShell>」はプロンプトです。  
```
PowerShell> $a = Import-Csv -LiteralPath abc.csv -Encoding UTF8
PowerShell> $a
abc def ghi
--- --- ---
0  1  2
3  4  5
```
加工します。
```
PowerShell> $a |% { if ($_.abc -eq 0) { $_.abc = '99' }; $_ }
abc def ghi
--- --- ---
99 1  2
3  4  5
```
読み込み、加工し、保存します。
```
PowerShell Import-Csv -LiteralPath abc.csv -Encoding UTF8 |
PowerShell> Import-Csv -LiteralPath abc.csv -Encoding UTF8 |
>> % { if ($_.abc -eq 0) { $_.abc = '99' }; $_ } |
>> Export-Csv -LiteralPath dst.csv -Encoding UTF8 -NoTypeInformation
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る