【发布时间】:2013-11-03 12:53:09
【问题描述】:
我有一个格式如下的 CSV 文件:
ID,Name,Notes,Status
1,aaa,blah,
blah2,status1
2,bbb,foo,status1
3,ccc,pow,
pow2,status1
如您所见,“备注”列中的某些单元格包含逗号和换行符。我需要将这些字符替换为空格,并将新行中的数据聚合到上一行的 Notes 单元格中,同时仍将状态带入 Status 列,使其看起来像这样:
ID,Name,Notes,Status
1,aaa,blah blah2,status1
2,bbb,foo,status1
3,ccc,pow pow2,status1
我想出了以下sn-p:
(Import-Csv $reportfile) | % {
$_.Notes = $_.Notes -replace "`r`n",' '
$_.Notes = $_.Notes -replace "`n",' '
$_.Notes = $_.Notes -replace ',',' '
$_
} | Export-Csv $newfile -NoTypeInformation
问题是当文件被导入时,一行中的数据被Powershell解释为一行。所以当我导出它时,它仍然保存在自己的行中。有什么想法可以如何以不同的方式导入文件并仍然完成从该列中替换那些不需要的字符?
【问题讨论】:
-
Import-Csv读取文件并根据 CSV 文件的工作方式对其进行解释。如果您的文件不是 CSV 文件或以某种方式违反 RFC 4180,那么事情当然会变得奇怪。不过,您始终可以预处理文件的内容并将它们传递给ConvertFrom-Csv。 -
如何在不使用 Import-CSV 的情况下预处理文件并仅触摸这些列?
标签: .net powershell csv powershell-2.0