我有一些日志行,其中的信息字段重复出现,第一次用逗号和空格隔开,第二次用分号隔开,我想摆脱它们的第二次出现,即单词(SECOND)不在日志中,我将其放在此处以使其更清晰
targets:somehost state:Memory\Buffers=398672, Memory\Cached=4620216, Memory\MemFree=833748, Memory\MemTotal=8001352 (SECOND) Memory\Buffers=398672;Memory\Cached=4620216;Memory\MemFree=833748;Memory\MemTotal=8001352 type:Unix Resources
我在考虑使用替换。
%{$_ -replace "Memory\\Buffers=([0-9]+);Memory\\Cached=([0-9]+);Memory\\MemFree=([0-9]+);Memory\\MemTotal=([0-9]+)",""}
但是日志中有很多字段,为了使可读性更好,我在这里没有输入。
有一个更好的方法吗?
最佳答案
您可以删除第二个出现的Memory\Buffers=
(带有正look-behind assertion ( (?<=...)
)的开始(包括):
$string -replace '(?<=Memory\\Buffers=.*?)\s*Memory\\Buffers.*$'
如您所见,使用正look-ahead assertion (
(?=...)
),您可以指定第二个序列的停止位置:$string -replace '(?<=Memory\\Buffers=.*?)\s*Memory\\Buffers.*(?=\stype:)'
关于powershell - 消除日志行中的重复字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60366058/