PowerShell替换文本文件中{ }失败,寻求解决方案
解决PowerShell替换文本文件中跨行{ }的问题
嘿,我来帮你搞定这个问题!你之前的命令没成功主要有两个原因:一是Get-Content默认会把文件按行拆成数组,没法匹配跨行的{和};二是正则表达式没正确处理换行和空白,还有命令行里的引号转义也可能出问题。
给你几个可行的解决方案:
方案1:在PowerShell控制台直接运行
# 先读取整个文件为单个字符串,再替换,最后写回文件 (Get-Content file.txt -Raw) -replace '\{\s*\}', 'mytext' | Set-Content file.txt
这里的关键细节:
-Raw参数:让Get-Content把整个文件内容当成一个完整字符串读取,而不是分成一行行的数组,这样才能匹配跨行的{和}。- 正则表达式
'\{\s*\}':\{和\}是转义后的字面量大括号(因为大括号在正则里是特殊字符)\s*匹配任意数量的空白字符(包括换行、空格、制表符),不管{和}之间是换行还是空格都能匹配上。
方案2:在CMD中调用PowerShell执行
如果是在CMD窗口里运行,需要调整引号的写法:
powershell -Command "(Get-Content file.txt -Raw) -replace '\{\s*\}', 'mytext' | Set-Content file.txt"
额外提醒
替换前最好先备份一下file.txt,避免操作失误导致内容丢失哦!
内容的提问来源于stack exchange,提问作者JimmyY
相关产品推荐
相关产品推荐

