我正在尝试清理日志文件并将包含单词lab
的所有主机名替换为sanitized
如果我知道所有可能的主机名,我可以循环替换,但是有数百个主机名,但都包含单词lab
,例如:
我尝试了以下内容:
(get-content .\log.txt) -replace '\*lab\*', "sanitized"
(get-content .\log.txt) -replace '*lab*', "sanitized"
答案 0 :(得分:1)
-replace
运算符使用正则表达式,因此您的通配符尝试不起作用,但您的方法是正确的。
## \w+ captures 1+ word characters
## -lab- captures case-insensitive literally
## .*? captures any characters up to a whitespace
## )+ captures 1+ instances
$Pattern = '(\w+-lab-.*?)+'
(Get-Content -Path 'Logfile.txt') -replace $Pattern,'sanitized_hostname' |
Out-File -FilePath 'Sanitized_Logfile.txt' -Encoding 'UTF8'
## Set-Content -Path 'Logfile.txt' -Encoding 'UTF8'