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

使用awk为.dog添加数值前缀 支持行内多匹配最多5次计数

问题需求
  • 处理文本文件中所有出现的.dog字符串,为其添加数值前缀,格式为数字.dog,例如.dog改为1.dog,foo.dogfish改为foo1.dogfish
  • 同一行内的多个.dog匹配项需使用相同的当前计数值
  • 计数上限为5,计数状态保持稳定
  • 支持忽略大小写匹配
现有代码问题

原有代码仅调用了sub函数,该函数默认仅替换每行第一个匹配到的.dog,无法处理单行多匹配的场景。

修复后的实现方案

将单次替换的sub替换为全局替换函数gsub,同时补充计数上限判断和忽略大小写配置即可,完整代码如下:

awk '
BEGIN {
    count = 1
    IGNORECASE = 1
}
/\.dog/ {
    t = int(count)
    gsub(/\.dog/, t "&")
    if (count < 5) count += 0.2
}1' 输入文件路径
逻辑说明
  • gsub(/\.dog/, t "&"):全局替换当前行所有.dog匹配项,&代表匹配到的原字符串,拼接前缀数值t即可实现需求
  • int(count):取当前计数的整数部分作为前缀,保证同一行所有匹配项前缀统一
  • count += 0.2:每处理一行包含.dog的内容计数加0.2,累计加5次后整数部分进1,配合上限判断实现最大前缀为5的要求
  • IGNORECASE = 1:开启忽略大小写匹配,避免大小写变体匹配遗漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:06:08