如何修改文件匹配行首尾:将title={内容}替换为title={{内容}}
当然有办法啦!这种批量替换需求,不同工具都能搞定,我给你整理几个常用的方案,你可以根据自己的场景选择:
方案1:用sed命令(Linux/macOS终端)
如果你习惯用终端操作,sed是个高效的选择。这条命令会直接修改你的文件,把所有title={xxx}格式的内容替换成title={{xxx}},同时完全保留xxx的内容:
sed -i 's/title={\([^}]*\)}/title={{\\1}}/g' your_file.txt
简单解释下各个部分:
-i:直接修改原文件(如果是macOS,可能需要写成sed -i '' '...' your_file.txt)s/旧模式/新模式/g:全局替换(g代表替换所有匹配项)\([^}]*\):这是一个捕获组,专门匹配{和}之间**除了}之外的所有内容**,确保不会误匹配到后面的其他}`\\1:引用刚才捕获到的内容,也就是你要保留的WHATEVER_IS_INSIDE
方案2:用VS Code(或其他IDE)的查找替换
如果更习惯可视化操作,IDE的查找替换功能更直观:
- 打开你的文件,按下
Ctrl+Shift+H(Windows/Linux)或Cmd+Shift+H(macOS)打开查找替换面板 - 点击面板右上角的
.*按钮,开启正则表达式模式 - 在「查找」框输入:
title={([^}]*)} - 在「替换」框输入:
title={{$1}} - 点击「全部替换」按钮,搞定!
这里的([^}]*)同样是捕获原内容,$1用来引用捕获到的部分,和sed的逻辑一致。
方案3:用Python脚本(适合复杂场景)
如果需要和其他代码逻辑结合,或者处理更复杂的文件,写个小Python脚本也很方便:
import re # 读取目标文件 with open("your_file.txt", "r", encoding="utf-8") as file: content = file.read() # 执行替换:保留原内容,给title的值套上双层大括号 updated_content = re.sub(r'title={([^}]*)}', r'title={{\\1}}', content) # 将修改后的内容写回文件 with open("your_file.txt", "w", encoding="utf-8") as file: file.write(updated_content)
运行这个脚本后,你的文件就会完成批量替换啦~
小提醒
如果你的WHATEVER_IS_INSIDE里包含嵌套的},那上面的正则可能会失效,但根据你的描述,内容都是不同的字符串,应该不会有这种情况,所以这些方案完全够用。
内容的提问来源于stack exchange,提问作者shoma_pfc




