0

我有一个格式如下的 CSV 文件:

ID,Name,Notes,Status
1,aaa,blah,
blah2,status1
2,bbb,foo,status1
3,ccc,pow,
pow2,status1

如您所见,Notes 列中的某些单元格包含逗号和换行符。我需要用空格替换这些字符,并将新行中的数据聚合到上一行的 Notes 单元格中,同时仍将状态带入 Status 列,使其看起来像这样:

ID,Name,Notes,Status
1,aaa,blah blah2,status1
2,bbb,foo,status1
3,ccc,pow pow2,status1

我想出了以下片段:

(Import-Csv $reportfile) | % {
  $_.Notes = $_.Notes -replace "`r`n",' '
  $_.Notes = $_.Notes -replace "`n",' '
  $_.Notes = $_.Notes -replace ',',' '
  $_
} | Export-Csv $newfile -NoTypeInformation

问题是当文件被导入时,单独一行的数据被Powershell解释为一行。所以当我导出它时,它仍然保存在自己的行中。有什么想法可以以不同的方式导入文件并仍然完成从该列中替换那些不需要的字符吗?

4

1 回答 1

1

您可以尝试以下方法:

(Get-Content -ReadCount 0 $reportfile) -replace ',\r\n(?=\D)', ' ' -split "`r`n" | ConvertFrom-Csv

(未经测试)

这将首先将文件作为单个字符串读取,然后在行尾替换逗号,然后用空格替换换行符,然后在换行符处拆分字符串并将其传递给ConvertFrom-Csv.

于 2013-10-24T17:17:11.013 回答