我需要在以下文件中的多行中找到此模式"LogEntry="
:
C:\ test.conf
将该行改为:"LogEntry=&MAC="
而不是。{/ p>
到目前为止,脚本工作正常,但如果有人运行该脚本两次,它将重新添加相同的模式,将其加倍。
我需要找到一种方法来检查文件是否已经包含该模式。有人可以帮我一把吗?
答案 0 :(得分:1)
在你的正则表达式中使用负向前瞻,例如:
'LogEntry=(?!&MAC=)'
该正则表达式与已修改的行不匹配。详细了解look ahead/behind zero length assertions。
顺便说一句,如果你有PowerShell Community Extensions,你可以用一个命令来编辑操作:
Edit-File C:\test.conf -Pattern 'LogEntry=(?!&MAC=)' -Replace 'LogEntry=&MAC='
如果你不能使用PSCX的编辑文件,这大致相当于:
$content = Get-Content C:\test.temp
$content | Foreach {$_ -replace 'LogEntry=(?!&MAC=)','LogEntry=&MAC='} | Out-File -Encoding ASCII
我不知道文件的文件编码是什么。您需要知道并在Out-File
命令上使用适当的编码。如果未指定编码,则默认为Unicode。