一些在CSV文件中替换引号和特殊字符的难题

时间:2017-02-17 22:35:54

标签: powershell

我有一些难题正在使用一些需要清理并加载到数据库中的CSV文件。

我对PowerShell非常擅长,但是使用正则表达式和csv列操作很差。

这是我遇到的问题;有一个'笔记'我正在使用的CSV文件中的字段,可以有各种各样的字符。主要问题是我需要删除换行符,并在字段中引用WITHIN,但将常规换行符和文本限定引号保留在它们应该的位置。我可以删除整个文件中的换行符和引号,但不能特别删除字段中的字符。

我尝试使用正则表达式来做这件事,但我没有太多运气,老实说,我不熟悉正则表达式。我希望有人能帮到这个!

编辑:这是示例数据

"123"   ""  "2017-02-13 10:26:08" "123456789"   "2017-02-10"    "No"    "Yes"   "Yes"   "No"    "sa‌​mple text 
<crlf> ""additional text""
<crlf> 
<crlf> "    "Y" <crlf>

这应该只是一行,除了最后。

1 个答案:

答案 0 :(得分:1)

内置Import-Csv cmdlet正确导入多行和引用值。

您的文件以制表符分隔,因此我们会指定"`t"

Import-Csv c:\file.csv -Delimiter "`t" | ForEach {
    $_.notes = $_.notes -replace '"', '' -replace '[\r\n]+', ' '
    $_
} | Export-Csv c:\output.csv -Delimiter "`t" -NoTypeInformation -Encoding UTF8