如何从日志文件中提取几个字符串

时间:2019-04-18 09:20:51

标签: powershell

我正在尝试从日志文件中提取几个字符串。到目前为止,一切都很好。但是我不知道如何从结果中仅提取所需的细节。

示例

日志条目如下所示:

(DIAG:XMLRPC)(11:07:01 15/04/2019)(MEM:130590)(TID:3632)(USER:Administrator)(REMOTE:10.67.125.177:59032)(XmlRpc: called method 'QueryCreativeFilterInfoList'.31)

我可以用以下代码对其进行解析:

$output_file = 'C:\Copy-Test\logins.txt'
$regex = 'QueryCreativeFilterInfoList'
$files = Get-ChildItem "C:\Copy-Test\Logs"

foreach ($file in $files)
 {
    gc $file.FullName | select-string -Pattern $regex | Select-String -Pattern "Administrator" | Out-File -FilePath $output_file -Append
}

现在我只想输出数据,时间用户名,但是我不知道如何。我看到了一些疯狂的正则表达式的东西,但这远远超出了我的技能水平。

如果有人可以指导我,我将不胜感激

1 个答案:

答案 0 :(得分:2)

最简单的方法是用)(分隔符分割日志条目字符串,然后打印结果数组的成员。像这样:

gc $file.FullName | select-string -Pattern $regex | Select-String -Pattern "Administrator"| foreach {
   $a=$_ -split "\)\("
   "$(($a[1] -split " ")[1,0] -join ' ') $($a[4].substring(5))"
}