2014-05-23 6 views
1

다른 프로세스에 대해 다음 줄을 객체로 분할하고 싶습니다. 라인은 Exchange의 부적절한 SMTP 로그 파일입니다.Regex : 필터 문자열

2014-05-23T08:38:58.869Z,Exchangeserver\External Relay,08D1437A9AEFF27B,5,192.168.100.211:25,192.168.100.211:46964,<,MAIL FROM: <[email protected]> 

정규 표현식으로이 작업을 수행 할 수 있습니까?

원하는 출력 :

Time: 08:38:58 
Connector: Exchangeserver\External Relay 
ExchangeID:08D1437A9AEFF27B 
MailFrom:[email protected] 

미안 해요,하지만 정규 표현식 내 머리에 무거운에 있습니다 .. :(

고마워요 당신만을위한 정규식 필요

답변

2

! 이메일 주소 : -split :

$arr = @("2014-05-23T08:38:58.869Z,Exchangeserver\External Relay,08D1437A9AEFF27B,5,192.168.100.211:25,192.168.100.211:46964,<,MAIL FROM: <[email protected]> " -split ",") 

$ht = [ordered]@{} 
$ht["Time"] = $arr[0] 
$ht["Connector"] = $arr[1] 
$ht["ExchangeID"] = $arr[2] 
$ht["MailFrom"] = $($arr[7] -match "([^[email protected]][email protected][^>]+)" | Out-Null; $matches[1]) 

$ht 

그러면 해시 테이블에서 결과의 서식을 지정하여 원하는 출력을 얻을 수 있습니다.

+0

좋아 .. 내가 더 작업에 -split를 사용합니다! 그러나 Exchange 2010은 PowerShell V3과 호환되지 않으므로 [주문 됨]을 사용할 수 없습니다. 필요한 경우 모르겠지만 두 번째 줄 (datetime)은 2008R2 서버에서 작동하지 않습니다. Windows 8.0에서는 작동하지만 출력은 다음과 같습니다. 이름 값 -------- 시간 12:00:00 – Daniel4711

+0

@ Daniel4711 누군가 내 대답을 편집했지만 시간을 표시하지 않았습니다. 시간을 추출하려면 적절한 형식 문자열을 찾거나 정규식을 사용하십시오. [주문 됨 :] 필요하지 않습니다. 해시 테이블은 항목의 순서를 유지할 수는 없지만 여기서는 문제가 아니므로 어쨌든 키를 사용하여 값을 명시 적으로 참조 할 수 있습니다. –

2
$line = 
'2014-05-23T08:38:58.869Z,Exchangeserver\External Relay,08D1437A9AEFF27B,5,192.168.100.211:25,192.168.100.211:46964,<,MAIL FROM: <[email protected]>' 

$regex = '^[0-9-]+T([0-9:]+).+?,(.+?),(.+?),.+?MAIL FROM: <.*?(\[email protected]\w+?\.\w+)>' 

$line | 
New-PSObjectFromMatches -pattern $regex -Property $null,Time,Connector,ExchangeID,MailFrom | 
format-list 


Time  : 08:38:58 
Connector : Exchangeserver\External Relay 
ExchangeID : 08D1437A9AEFF27B 
MailFrom : [email protected] 

현재 뉴 PSObjectFromMatches 기능이 있음을 얻을 수 있습니다 :

http://gallery.technet.microsoft.com/scriptcenter/New-PSObjectFromMatches-87d8ce87

+0

+1 훌륭한 기능! 필요한 코드 블록 중 하나는 필요할 때마다 다시 작성하지만 저장하지 마십시오. 마침내 구원을 얻었습니다 : D –

+1

감사합니다 (-debug를 사용해보십시오)! – mjolinor

+0

팁 주셔서 고마워요,하지만 $ Regex 수정 어려운 일입니다. - 조각은 그렇게 강력하지는 않지만 사용하기 쉽습니다! – Daniel4711