断管分隔文件

时间:2014-01-04 02:13:54

标签: parsing powershell

我有一个管道损坏的文件作为分隔符(Hex A6?)

我正在尝试使用powershell(导入CSV)

来读取该文件
Import-Csv .\a.dat -delimiter "¦"

但是,没有任何内容正在阅读中。任何帮助都可以解析它。

样本数据集:

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

Import-CSV绝对不喜欢使用它作为分隔符 这是一种解决方法(需要V3,但可以适应早期版本):

$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  

答案 2 :(得分:0)

作为解决方法,我用常规管道替换了破裂管道。现在,我能够毫无问题地阅读该文件。

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

感谢您的帮助!