我有logfile1,它正在提取变量$a
,$up
,$left
。我有logfile2,我正在提取变量$b
,$down
,$right
。我的目标是将日志文件1中的任何行替换为日志文件2中的数据,其中$a
= $b
,$up
= $down
和$left
= {{1} },只要这3个都匹配。如果任何变量都不匹配,我想在日志文件1中创建一个新行,其值分别为$right
,$b
和$down
。现在,我具有.log格式的这些日志文件,但是如果这样更容易,我可以将它们更改为CSV或任何其他文件类型。
-开始编辑
每个变量都使用以下基本格式从相应的日志文件中提取:
$right
变量$logfilea = '\b\d{1,2}:\d{1,2}:\d{1,2}'
select-string -Path $logfileone -Pattern $logfilea -AllMatches | % {$_.Matches} | %{$_.Value} | Set-Variable -Name a
$logfileup = '([a-zA-Z] [a-zA_Z] ([a-zA_Z]))'
select-string -Path $logfileone -Pattern $logfileup -AllMatches | % {$_.Matches} | %{$_.Value} | Set-Variable -Name up
$logfileright = '([a-zA-Z] [a-zA_Z] ([a-zA_Z]))'
select-string -Path $logfileone -Pattern $logfileright -AllMatches | % {$_.Matches} | %{$_.Value} | Set-Variable -Name up
$logfileb = '\b\d{1,2}:\d{1,2}:\d{1,2}'
select-string -Path $logfiletwo -Pattern $logfileb -AllMatches | % {$_.Matches} | %{$_.Value} | Set-Variable -Name b
$logfiledown = '([a-zA-Z] [a-zA_Z] ([a-zA_Z]))'
select-string -Path $logfiletwo -Pattern $logfiledown -AllMatches | % {$_.Matches} | %{$_.Value} | Set-Variable -Name down
$logfileleft = '([a-zA-Z] [a-zA_Z] ([a-zA_Z]))'
select-string -Path $logfiletwo -Pattern $logfileleft -AllMatches | % {$_.Matches} | %{$_.Value} | Set-Variable -Name left
和$a
是时间值。 $b
和$up
是两个文本对象,在括号中带有第三个对象。 $down
和$right
是括号内的文本对象。所有数据均按其模式匹配。谢谢您的帮助。