You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于预定义替换规则文件,批量对多个文件执行字符串替换?

批量多字符串替换Unix工具实现方案

适用工具

最适合的Unix工具组合是sed + awk,不需要引入Python等更重的工具,完全可以通过基础命令行工具实现需求。

实现步骤

步骤1:生成sed替换规则

你当前的substs.csv格式无需调整,直接通过awk将每行的替换对转换为sed的替换语法即可:

# 输出规则到临时sed脚本文件
awk -F ', ' '{print "s/"$1"/"$2"/g"}' substs.csv > replace.sed

如果你的搜索字符串或替换字符串中包含/字符,可以替换sed的分隔符为其他不冲突的符号(比如#),避免转义麻烦:

# 改用#作为分隔符的版本
awk -F ', ' '{print "s#"$1"#"$2"#g"}' substs.csv > replace.sed

步骤2:执行批量替换

处理单个目标文件的命令如下:

下述-i.bak的写法同时兼容GNU sed(Linux默认)和BSD sed(macOS默认),不需要额外调整参数,执行后会自动生成.bak后缀的备份文件,防止操作失误。

sed -i.bak -f replace.sed 你的目标文件

如果需要批量处理多个文件,可以通过循环实现:

# 示例:批量处理当前目录下所有.txt文件
for file in *.txt; do
  sed -i.bak -f replace.sed "$file"
done
# 确认替换无误后,可批量删除备份文件
rm *.bak

单行简化版本

如果不想生成临时的replace.sed文件,可以通过进程替换直接把规则传给sed:

sed -i.bak -f <(awk -F ', ' '{print "s/"$1"/"$2"/g"}' substs.csv) 目标文件

注意事项

因为你已经确认替换规则的执行顺序不影响最终结果,上述方案不需要额外调整规则排序,可以直接使用。如果后续有特殊字符需要匹配,自行调整sed规则的转义逻辑即可。

内容的提问来源于stack exchange,提问作者fearless_fool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:00:00