更改CSV文件列中的值

时间:2017-01-20 16:24:51

标签: powershell csv

我正在尝试使用PowerShell找到一种方法来更改csv文件中“可用人员”列中所有条目的值。

如果值为'Y',则应将其更改为'1',如果值为'N',则应将其更改为')':

Branch Number,      CoreID,     Available Person,      Workstation
8002,           FMD354800200,   Y,
8002,           FMD354800201,   Y,
8002,           FMD354800202,   N,
8002,           FMD354800203,   N,
8002,           FMD354800204,   Y,

这是我尝试过的:

$csv=Import-Csv user.csv' | $csv | %{ if($_.'Available Person' -eq "Y") {$_.'Available Person'="1"} } $csv|export-csv user1.csv' -NoTypeInformation

3 个答案:

答案 0 :(得分:6)

以下是一些示例代码,说明如何使用Switch语句

解决此问题
$ImportedCSV = Import-CSV C:\user.csv
$NewCSV = Foreach ($Entry in $ImportedCsv) {
    Switch ($Entry."Available Person") {
        Y {$Entry."Available Person" = "1"}
        N {$Entry."Available Person" = ")"}
        default {Write-Error "$($Entry."Branch Number") has unexpected value for Available Person"}
    }
    $Entry
}
$NewCSV | Export-CSV C:\user1.csv -NoTypeInformation

答案 1 :(得分:3)

试试这个

(Import-Csv C:\temp\LastAnalyse.csv | 
    %{$_.'Available Person'=if ($_.Path -eq 'Y') {'1'} elseif ($_.Path -eq 'N') {')'} else {$_.'Available Person'}; $_}) | 
        Export-Csv  C:\temp\LastAnalyse.csv -NoTypeInformation

答案 2 :(得分:0)

$csv = Import-Csv -Path 'C:\TEMP\41768152.csv'

$csv | ogv

foreach ($row in $csv)
{
    $row.'Available Person' = $row.'Available Person' -ireplace 'Y','1' -ireplace 'N',')'
}

$csv | ogv