2017-04-03 48 views
3

我需要在許多CSV文件替換爲"-"""(無),除了Name列,其中可能包含-字符我需要保持替換特定列的字符。PowerShell的 - 在一個CSV文件

例:

 
"Name","timestamp","CPU|Demand (%)","CPU|Demand (%) (Trend)","CPU|Demand (%) (30 days forecast)" 
"ZY02-LAB-WinMachine","Mar 2, 2017 12:01:19 AM","-","38.07","-" 
"ZY02-LAB-WinMachine","Mar 21, 2017 10:45:00 AM","40.55","-","-" 
"ZY02-LAB-WinMachine","Apr 6, 2017 11:56:19 AM","-","-","38.69" 
"ZY02-LAB-WinMachine","Apr 6, 2017 12:11:19 PM","-","-","38.7" 

將成爲

 
"Name","timestamp","CPU|Demand (%)","CPU|Demand (%) (Trend)","CPU|Demand (%) (30 days forecast)" 
"ZY02-LAB-WinMachine","Mar 2, 2017 12:01:19 AM","","38.07","" 
"ZY02-LAB-WinMachine","Mar 21, 2017 10:45:00 AM","40.55","","" 
"ZY02-LAB-WinMachine","Apr 6, 2017 11:56:19 AM","","","38.69" 
"ZY02-LAB-WinMachine","Apr 6, 2017 12:11:19 PM","","","38.7" 

行我有我的劇本在CSV替換所有- ..甚至Name列:-(

(Get-Content $ImportCPUFile) | % {$_ -replace "-"} | out-file -FilePath CSV-cleaned.csv -Fo -En ascii 

回答

2

試試這個:

(Get-Content $ImportCPUFile) | 
    ForEach-Object { $_ -replace '"-"', '""' } | 
    Out-File -FilePath CSV-cleaned.csv -Force -Encoding ascii 
+0

和煦:-) 正常使用... :-) –

3

嘗試這樣:

$Csv = Import-Csv -Path $ImportCPUFile; 
$Headers = $Csv | Get-Member -MemberType NoteProperty | Select-Object -ExpandProperty Name; 

ForEach ($Record in $Csv) { 
    foreach ($Header in $Headers) { 
     if ($Record.$Header -eq '-') { 
      $Record.$Header = [String]::Empty; 
     } 
    } 
} 

$Csv | Export-Csv -Path $OutputFile -NoTypeInformation; 

您可能需要使用$Record.$Header.Trim() -eq '-'的,而不是如果你有前導或尾隨在某些領域的空間比較。

0

培根位有非常好的代碼,但我認爲它可以稍微修改一下。如果名稱列將具有值「 - 」會發生什麼?

$Csv = Import-Csv -Path $ImportCPUFile 

$Headers = $Csv | Get-Member -MemberType NoteProperty | Select-Object -ExpandProperty Name; 

ForEach ($Record in $Csv) { 
    foreach ($Header in $Headers) { 
     if ($Header -ne "Name") { 
      $Record.$Header = $Record.$Header.Replace("-","") 
     } 
    } 
} 
$Headers = $Csv | Get-Member -MemberType NoteProperty 


$Csv | Export-Csv -Path $OutputFile -NoTypeInformation; 
+0

酷:-)謝謝你們:-) –