Parsing 断开的管道分隔文件

Parsing 断开的管道分隔文件,parsing,powershell,Parsing,Powershell,我有一个文件,其中以断裂的管道作为分隔符(十六进制A6?) 我正在尝试使用powershell(导入CSV)读取该文件 然而,没有任何内容被阅读。感谢您的帮助来解析它 样本数据集: F1 ¦ Part 1 ¦ 51322 ¦ 176 F2 ¦ Part 2 ¦ 473976 ¦ 150 F3 ¦ Part 3 ¦ 7327 ¦ 82

我有一个文件,其中以断裂的管道作为分隔符(十六进制A6?)

我正在尝试使用powershell(导入CSV)读取该文件

然而,没有任何内容被阅读。感谢您的帮助来解析它

样本数据集:

F1 ¦ Part 1                ¦      51322 ¦   176           
F2 ¦ Part 2 ¦     473976 ¦   150           
F3 ¦ Part 3              ¦       7327 ¦    82           

看起来您的文件编码已关闭。尝试使用
-Encoding UTF7
参数。在我的测试中,这似乎得到了你想要的结果

Import-Csv -Path C:\test\a.dat -Delimiter ([char]166) -Encoding UTF7;

导入CSV肯定不喜欢将其用作分隔符。
这里有一个变通方法(需要V3,但可以适应早期版本):


作为一种解决办法,我用一根普通的管子更换了破损的管子。现在,我可以毫无问题地读取文件了

 (Get-Content .\a.dat) -replace '¦', '|' | Out-File b.dat

谢谢你的帮助

没有为我工作<代码>PS C:\Data>导入Csv。\a.dat-分隔符([char]166)-编码UTF7;导入Csv:找不到与参数名称“Encoding”匹配的参数。在第1行char:52+导入Csv。\a.dat-分隔符([char]166)-编码您正在运行的PowerShell的哪个版本?我在v4.0.V2上运行了它。如何升级到V4?请安装Microsoft.NET Framework 4.5.1,然后安装Windows Management Framework(WMF)Core 4.0。这仅适用于Windows 7,仅供参考。他们必须已将
-Encoding
参数添加到PowerShell版本3.0或4.0中的
导入Csv
。您的
a.dat
文件的编码是什么?
$file = 'c:\testfiles\file.txt'
$char = [char]166
$Cols = 'Col1','Col2','Col3','Col4'

Get-Content $file |
Foreach {
 $ht=[ordered]@{}
 $parts = $_.split($char)
 0..($Cols.count -1) |
 foreach {$ht[$cols[$_]] = $Parts[$_].trim()}
 [PSCustomObject]$ht
 } | Format-Table -AutoSize



Col1 Col2   Col3   Col4
---- ----   ----   ----
F1   Part 1 51322  176 
F2   Part 2 473976 150 
F3   Part 3 7327   82  
 (Get-Content .\a.dat) -replace '¦', '|' | Out-File b.dat