在文件中搜索特定字符串

时间:2014-11-28 19:35:08

标签: string powershell pattern-matching conditional-statements

我需要在以下文件中的多行中找到此模式"LogEntry=": C:\ test.conf

将该行改为:"LogEntry=&MAC="而不是。{/ p>

到目前为止,脚本工作正常,但如果有人运行该脚本两次,它将重新添加相同的模式,将其加倍。

我需要找到一种方法来检查文件是否已经包含该模式。有人可以帮我一把吗?

1 个答案:

答案 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。