我正在尝试使用PowerShell将某个列中的空值替换为0。
我有以这种格式的CSV:
test test2 test3 test4
---- ----- ----- -----
blah fsds 4 45645
bla1 fsds1 45645
blah2 fsds2 4 34322
blah3 fsds3 4 67544
blah4 fsds4 3432432
所以我想通过“test3”中的空值并替换为0。
我有这个,但它不起作用:
$inFilePath = "G:\powershell\excel\test.csv"
$csvColumnNames = (Get-Content $inFilePath | Select-Object -First 1).Split(",")
foreach ($row in $inFilePath) {
if ($row.test3 -eq $null) {
$row.test3 = 0
Write-Host "updating value in excel"
}
}
$csvColumnNames | Export-Csv "G:\powershell\excel\replaced2.csv" -NoTypeInformation
答案 0 :(得分:1)
你与foreach和if一起走在正确的轨道上。试试这个:
foreach($row in $inFilePath)
{
if (-not $row.test3)
{
$row.test3= 0
}
}
获取列标题:
$inFilePath | Get-Member -MemberType NoteProperty | Select-Object -ExpandProperty Name
答案 1 :(得分:1)
使用Import-Csv
进行阅读,使用Export-Csv
进行CSV文件编写。
$inFilePath = "G:\powershell\excel\test.csv"
$outFilePath = "G:\powershell\excel\replaced2.csv"
Import-Csv $inFilePath | % {
if (-not $_.test3) { $_.test3 = 0 }
$_ # echo all records, so they can be exported back to a file
} | Export-Csv $outFilePath -NoType