2013-03-15 3 views
1

Powershell에서 단순해야하는 작업을 시도하고 있지만 내 인생을 생각할 수는 없습니다. 어떻게 든 무언가로 결과를 변환하는 내가 형식으로 파이프를 할 수있는 후 처음 두 항목을 잡아, 그리고, ""Format-Table에 대한 토큰 문자열

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

글쎄, 그런 경우에는 정규식이 보통 답을 얻는다. 문자열로 사용자 정의 객체를 만들고 나중에 필터, 정렬 및 서식 지정을 원하는대로 할 수 있습니다. 나는 매우 쉽게 달성 할 수있는 방식으로 $ Matches를 사용하는 것에 대해 블로그를 만들었습니다. http://becomelotr.wordpress.com/2013/01/07/quick-tip-matches-is-enough/ 그러나 여러 가지 방법이 있습니다. 이 고양이를 피부에. – BartekB

+0

정확히 내가 찾고 있던 것이 었습니다! 감사! – shellster