在powershell中使用不同分隔符和引号的import-csv

Nat*_* II 2 windows csv powershell

我有一个CSV文件使用不同于默认值的不同引号和文本分隔符字符.我知道分隔符有一个不同分隔符的选项,但我不知道如何摆脱引号字符.

Import-Csv 'C:\test.txt' -Delimiter "(character U+0014 is used here, won't show here)"
Run Code Online (Sandbox Code Playgroud)

但引号字符是U + 00FE,我需要删除它,所以我可以得到没有任何特殊字符的文本.我不想把它写到一个新文件.我想将csv导入变量,因此我可以对其进行一些分析.例如,查看字段是否为空.

有任何想法吗?

Joe*_*oey 6

分隔符实际上不是问题,因为你可以这样做

-Delimiter "$([char]0x14)"
Run Code Online (Sandbox Code Playgroud)

至于引号,您可以使用预处理步骤,然后使用ConvertFrom-而不是Import-CSV:

Get-Content test.txt |
    ForEach-Object { $_ -replace ([char]0xFE) } | # to remove the “quotes”
    ConvertFrom-CSV -Delimiter "$([char]0x14)"
Run Code Online (Sandbox Code Playgroud)

如果你的行包含嵌入式引号,那么它需要更多的工作,并且可能更容易强制引用每个字段:

$14 = "$([char]0x14)"
$_ -replace ([char]0xFE) -replace '"', '""' -replace "(?<=^|$14)|(?=`$|$14)", '"'
Run Code Online (Sandbox Code Playgroud)