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

标签 powershell

我在处理一些需要清除并加载到数据库的CSV文件时遇到了一个难题。

我对PowerShell相当熟练,但是对正则表达式和csv列操作却不满意。

这是我遇到的问题;我正在使用的CSV文件中有一个“注释”字段,可以包含各种字符。主要问题是我需要删除换行符和字段内的引号,但将常规换行符和文本限定引号保留在应有的位置。我可以删除整个文件中的换行符和引号,但不能专门删除字段中的字符。

我曾尝试使用正则表达式来做到这一点,但是运气并不好,老实说,我并不擅长使用正则表达式。我希望这里的人能够为您提供帮助!

编辑:这是示例数据

"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>

这应该只是一行,结尾处没有。

最佳答案

内置的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

关于powershell - 替换CSV文件中的引号和特殊字符的一些难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42308539/

相关文章:

variables - 永久 PowerShell 变量

regex - 允许数字和星号的正则表达式模式

powershell - 快速对包含大量日期的数组进行排序

powershell - Powershell 的 get-counters cmdlet 中返回的 "cooked value"是什么?

Powershell 查找文件夹,删除留下最新 5 的文件

powershell - 如何从 PowerShell 中的静态方法动态引用类和静态属性?

powershell - 在 PowerShell 中格式化数字以删除大于 1k 的数字 ","?

python - conda init powershell 没有效果

powershell - Nuget 恢复命令行响应在源上找不到包 - Artifactory 云服务器

Powershell [Ref] 值未更新主对象