2013-07-09 51 views
-5
1111 700000000000c940 FIBRE FA-11G:1,FA-12G:1 
     700000000000c940 FIBRE FA-11G:1,FA-12G:1 
     700000000000c940 FIBRE FA-11G:1,FA-12G:1 
     700000000000c940 FIBRE FA-11G:1,FA-12G:1 
2211 700000000000c940 FIBRE FA-11G:1,FA-12G:1 
     700000000000c940 FIBRE FA-11G:1,FA-12G:1 
     700000000000c940 FIBRE FA-11G:1,FA-12G:1 
     700000000000c940 FIBRE FA-11G:1,FA-12G:1 
3311 700000000000c940 FIBRE FA-11G:1,FA-12G:1 
     700000000000c940 FIBRE FA-11G:1,FA-12G:1 
     700000000000c940 FIBRE FA-11G:1,FA-12G:1 
     700000000000c940 FIBRE FA-11G:1,FA-12G:1 

如何使用PowerShell在同一行打印?如何格式化非结构化文本文件?

1111 700000000000c940 700000000000c940 700000000000c940 700000000000c940. 
2211 700000000000c940 700000000000c940 700000000000c940 700000000000c940. 
3311 700000000000c940 700000000000c940 700000000000c940 700000000000c940. 

任何帮助将十分赞赏

回答

0

如果您有PowerShell的v3可尝试这一个班轮:

(Get-Content file.txt -Raw) -replace '(?<=\w{16}\s).+' -replace '(?<=) |\r?\n\s+' 
+0

我目前没有权限访问PowerShell 3,但我会今天下载并运行它 – Frown

+0

这是完美的,完美的工作。万分感谢。如果你可以善意地解释你在这里做了什么,那么我可以学习一点。如果我必须在PowerShell 2中做同样的事情,我该怎么做? – Frown

+0

在V2中找到了一种方法。 [io.file] :: readalltext(“d:\ ps \ test.txt”)-replace'(?<= \ w {16} \ s)。+'-replace'(?<=)| \ r? \ n \ s +'但是我仍然需要了解这两个替换以及它们究竟做了什么。 – Frown

0

现在看来,有点更有意义。看哪,我最喜欢的工具,用于分析文本switch -regex

switch -regex -file foo.txt { 
    '^(\d+)\s+(\S+)' { 
     if ($s) { $s } 
     $s = "$($Matches[1]) $($Matches[2])" 
    } 
    '^\s+(\S+)' { $s += " $($Matches[1])" } 
} 
if ($s) { $s } 
+0

行数只是不断重复的,例如。 – Frown

+0

我需要的输出看起来像, – Frown

+0

它适用于几行,然后它doesnt一些,它永远不会运行,直到文件的结尾。下面的示例 – Frown