如何用PowerShell正则替换配置文件中指定键名的等号后全部内容
解决方案
你当前使用的是普通精确字符串替换方法,只会替换你明确写出的匹配片段,无法覆盖等号后的全部内容。改用 PowerShell 内置的正则替换运算符 -replace 即可实现需求,完整命令如下:
替换 app.gf.data.profile 配置
(Get-Content $TXT_FILE -Raw) -replace '(?m)^app\.gf\.data\.profile=.*$', "app.gf.data.profile=$Man" | Out-File $TXT_FILE -Encoding ASCII
替换 app.gf.data.profile.path 配置
(Get-Content $TXT_FILE -Raw) -replace '(?m)^app\.gf\.data\.profile\.path=.*$', "app.gf.data.profile.path=$Path" | Out-File $TXT_FILE -Encoding ASCII
规则说明
- 新增
-Raw参数:一次性读取整个文件内容,比逐行处理性能更高 (?m):正则多行模式标记,让^匹配每行的开头、$匹配每行的结尾,避免匹配到其他行的内容- 配置名中的
.全部加了反斜杠转义:正则中.默认是通配符,转义后才会匹配配置名里实际的点字符 .*:匹配等号之后到行尾的任意长度任意字符,整行替换为你指定的新键值对,完全覆盖原有取值
注意:如果你的变量
$Man或$Path中包含$字符,需要把替换字符串中的$转写为$$避免被正则识别为捕获组引用。
内容的提问来源于stack exchange,提问作者Alex_DE
相关产品推荐
相关产品推荐

