如果条件匹配,则替换日志文件中的文本

时间:2019-06-10 15:11:00

标签: powershell

我有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是括号内的文本对象。所有数据均按其模式匹配。谢谢您的帮助。

0 个答案:

没有答案