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

如何使用awk实现每匹配4次.txt后缀才执行sub替换重命名

解决方案

直接运行以下awk命令即可实现需求:

awk '/\.txt/{if(++match_cnt %4 == 0) sub(/\.txt/, ++replace_cnt "&")}1' 1.txt > 3.txt

实现逻辑说明

  1. 命令内置两个隐式初始化的计数器(awk变量默认初始值为0):
    • match_cnt:累计统计匹配到.txt后缀的次数
    • replace_cnt:统计实际执行替换操作的次数
  2. 每行匹配到.txt时先给match_cnt加1,判断match_cnt是否为4的整数倍:
    • 是则执行替换:将.txt替换为替换次数+.txt,同时替换计数自增
    • 否则不做修改直接输出
  3. 末尾的1是awk默认输出规则,会输出所有处理后的行内容

原有代码的问题

  • 后自增逻辑n++==4的判断会导致触发替换的匹配位置错位:第一次满足条件时是第5次匹配,和要求的第4次匹配替换不符
  • 没有用模运算做周期判断,只会触发1次替换,无法实现每4次匹配替换一次的周期性要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:54:03