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

时间:2012-09-05 13:56:25

标签: windows powershell csv

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

分隔符实际上不是问题,因为您可以使用

执行此操作
-Delimiter "$([char]0x14)"

至于引号,您可以使用预处理步骤,然后使用ConvertFrom-代替Import-CSV

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

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

$14 = "$([char]0x14)"
$_ -replace ([char]0xFE) -replace '"', '""' -replace "(?<=^|$14)|(?=`$|$14)", '"'
相关问题