Powershell脚本从CSV文件中删除不需要的引号

Powershell脚本从CSV文件中删除不需要的引号,powershell,Powershell,我想使用Windows PowerShell脚本从csv文件中删除不需要的引号,请帮助我解决此问题 输入 "aaa", "CI "-" Work", "111111", 20200210, "aaa" "bbb", "CI -" Work", "222222"", 20200210, "aaa" "ccc"", "CI -' Work", "222222"", 20200210, "aaa" 输出 "aaa", "CI - Work", "111111", 20200210, "aaa"

我想使用Windows PowerShell脚本从csv文件中删除不需要的引号,请帮助我解决此问题

输入

"aaa", "CI "-" Work", "111111", 20200210, "aaa"

"bbb", "CI -" Work", "222222"", 20200210, "aaa"

"ccc"", "CI -' Work", "222222"", 20200210, "aaa"
输出

"aaa", "CI - Work", "111111", 20200210, "aaa"

"bbb", "CI - Work", "222222", 20200210, "aaa"

"ccc", "CI - Work", "222222", 20200210, "aaa"

谢谢

如果中的
$包含您的文件数据,而逗号分隔的数据不包含逗号,则可以执行以下操作:

$in -replace '"|''' -replace '^|$','"' -replace '(,\s*)','"$1"'
$in | Foreach-Object {
    ($_ -split ',' -replace '(?<=^\s*)"|"(?=$)',';;;' -replace '"|''' -replace ';;;','"') -join ','
}
如果不希望逗号包围所有字段值,可以执行以下操作:

$in -replace '"|''' -replace '^|$','"' -replace '(,\s*)','"$1"'
$in | Foreach-Object {
    ($_ -split ',' -replace '(?<=^\s*)"|"(?=$)',';;;' -replace '"|''' -replace ';;;','"') -join ','
}
$in | Foreach对象{

($)-split'、'-replace'(?注意,powershell 7中的导出csv有一个-UseQuotes参数。

假设您的数据中没有任何特殊字符或分隔符,我将加载文件()并首先删除所有引号,然后通过管道将其重新插入正确的位置并使用以下命令将其写入新文件:


您的答案按预期运行,但是如果任何值没有双引号,我不想添加双引号。请您给出同样的建议。@user1565058,我添加了一个代码段,以避免添加额外的逗号。