2013-07-09 80 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