PowerShell如何查找指定字符串并在其后方追加对应内容
完全可以实现,你不需要替换整行,用-replace的正则捕获组功能就能精准在dbpassword=的等于号后追加内容,不会改动文件其他行、也不会修改目标行的其他内容。
实现代码(直接修改原文件)
# 请替换下方文件路径为你的实际配置文件路径 (Get-Content -Path "./db.conf" -Raw) -replace '(dbpassword=)', '${1}password' | Set-Content -Path "./db.conf" -Encoding UTF8
逻辑说明
- 正则表达式里的
()会把匹配到的dbpassword=内容捕获为第1个分组 - 替换时
${1}是直接引用刚才捕获的原内容,后面拼接你要追加的password,仅在等于号后方新增内容,无其他改动 - 增加
-Raw参数是为了一次性读取文件全部内容,处理效率更高
测试方法(不修改原文件,仅输出处理后内容校验)
(Get-Content -Path "./db.conf" -Raw) -replace '(dbpassword=)', '${1}password'
逐行处理方案(适合仅需修改第一个匹配行的场景)
如果你文件中可能存在多个dbpassword=行,只想修改第一个完全匹配dbpassword=的行,可以用逐行处理的写法:
$content = Get-Content -Path "./db.conf" $modified = $false $newContent = $content | ForEach-Object { if (!$modified -and $_ -eq 'dbpassword=') { $_ + 'password' $modified = $true } else { $_ } } $newContent | Set-Content -Path "./db.conf" -Encoding UTF8
内容的提问来源于stack exchange,提问作者Steven Yong
相关产品推荐
相关产品推荐

