对于其他进程,我想将以下行拆分为对象。
该行来自我们的Exchange传入SMTP日志文件。
2014-05-23T08:38:58.869Z,Exchangeserver\External Relay,08D1437A9AEFF27B,5,192.168.100.211:25,192.168.100.211:46964,<,MAIL FROM: <prvs=0220d28471=user@domain.eu>
使用正则表达式可以做到这一点吗?
所需输出:
Time: 08:38:58
Connector: Exchangeserver\External Relay
ExchangeID:08D1437A9AEFF27B
MailFrom:user@domain.eu
对不起,正则表达式对我的大脑来说太重了。
:(
非常感谢!
最佳答案
您只需要使用正则表达式来添加电子邮件。您可以使用-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: <prvs=0220d28471=user@domain.eu> " -split ",")
$ht = [ordered]@{}
$ht["Time"] = $arr[0]
$ht["Connector"] = $arr[1]
$ht["ExchangeID"] = $arr[2]
$ht["MailFrom"] = $($arr[7] -match "([^=@]+@[^>]+)" | Out-Null; $matches[1])
$ht
然后,您可以格式化哈希表中的结果以获取所需的输出。
关于regex - 正则表达式:过滤字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23828914/