2013-03-15 115 views
1

我正在嘗試做一些在Powershell中應該很簡單的事情,但我不能爲我的生活弄明白。我有一個看起來像這樣的日誌文件:格式化令牌字符串 - 表

item1:some text 1:more junk I don't care about. 
item2:some text 2:more junk I don't care about. 
item3:some text 3:more junk I don't care about. 
... 

我想用PowerShell來分割上「:」,搶前兩個項目,然後以某種方式將結果轉換成東西,我可以管格式化-表。最終結果將如下輸出:

Column A   Column B 
--------   -------- 
item1    some text 1 
item2    some text 2 
item3    some text 3 
... 

我絕不是Powershell專家,所以請隨時清理我的代碼。這是我目前有(我已經嘗試了幾個變化):

Get-Content C:\Temp\test.log | %{ 
    $data = $_.split(":"); 
    $hashString = 'a = ' + $data[0] + " `n b = " + $data[1]; 
    ConvertFrom-StringData -StringData $hashString 
} | ft @{Label="Column A"; Expression={$_.a}}, @{Label="Column B"; Expression={$_.b}} -auto 

在此先感謝。

回答

4

我會用進口-CSV爲... :)

Import-Csv -Path your.log -Delimiter : -Header ColumnA, ColumnB 

您可以使用任何字符作爲分隔符,包括結腸癌。

+0

您的答案適用於這種情況,所以我將其標記爲已接受,但我仍然希望對我的問題採用更一般的答案。如何使文本變爲可以使用format-table命令顯示/處理的格式? – shellster

+1

那麼,在這種情況下,正則表達式通常是答案。您只需從字符串創建自定義對象,然後可以執行任何您想要的操作:篩選,排序和格式化爲表格。我已經以使用$匹配的方式發佈了博文,使得它很容易實現:http://becomelotr.wordpress.com/2013/01/07/quick-tip-matches-is-enough/但是有很多方法去皮這隻貓。 – BartekB

+0

正是我在找的東西!謝謝! – shellster