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