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

如何用Perl实现多文件中保留首个匹配项替换其余所有匹配内容

调整后的Perl命令

perl -pi -w -e 's/THING/++$c == 1 ? $& : "SOMETHING_ELSE"/ge; if (eof) { $c = 0 }' ./src/**/*.py

改动说明

  • 新增e修饰符:让替换规则中的表达式作为可执行Perl代码处理,支持自定义判断逻辑
  • 引入匹配计数器$c:首次匹配到目标字符串时++$c等于1,直接返回原匹配内容$&保留第一个匹配项,后续所有匹配都会替换为指定的新字符串
  • 新增文件结束重置逻辑:每个文件处理完成后自动清零计数器,保证每个文件的第一个匹配项都能独立保留,不会出现跨文件计数的问题

注意事项

如果执行时提示./src/**/*.py匹配不到文件,说明当前Shell默认未开启递归匹配,执行命令前先运行shopt -s globstar开启globstar功能即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:54:02