如何使用ripgrep替换所有文件中的匹配内容并写入原文件
解决方案
要让ripgrep把修改后的内容直接写入原文件,只需要在你的命令里加上--in-place选项(这是ripgrep专门用于原地编辑文件的参数),调整后的命令如下:
rg --in-place -F "red" -r "green"
细节说明:
- 去掉了原命令里的
--passthru和-N:--passthru是用来把修改后的内容输出到标准输出,而--in-place模式下ripgrep会直接修改文件,不需要再输出到终端;-N是用来在输出时显示文件名,原地修改时这个参数也没用了。 - 如果需要保留原文件的备份(防止修改出错),可以给
--in-place加上后缀,比如生成.bak备份:
执行后,每个被修改的文件都会多出一个带rg --in-place=.bak -F "red" -r "green".bak后缀的备份文件,比如ip.txt.bak、ip2.txt.bak等。
执行这个命令后,你的ip.txt、ip2.txt等文件里的"red"都会被替换成"green",效果和你之前在标准输出里看到的完全一致。
内容的提问来源于stack exchange,提问作者Owen Young
相关产品推荐
相关产品推荐

