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

Ubuntu16.04下如何用gawk将以"alg开头的字符串替换为"dms::alg

问题修正方案

问题分析

现有代码的问题在于使用&引用整个匹配字符串时,将dms::放在了匹配内容的前面,导致替换结果顺序颠倒。我们需要把dms::插入到"和alg_xxx之间,而非整个匹配内容的前方。

修正后的gawk代码

通过捕获组拆分匹配内容,分别保留"和alg_xxx部分,再按目标顺序拼接:

awk '{
    sub(/(")(alg_\w+)/, "\1dms::\2");
    print
}'

代码说明

  • /(")(alg_\w+)/:用括号将匹配内容拆分为两个捕获组,第一个组匹配",第二个组匹配所有以alg_开头的字符串(如alg_hash、alg_sort)
  • "\1dms::\2":替换时先引用第一个捕获组的",再插入dms::,最后引用第二个捕获组的alg_xxx,恰好得到"dms::alg_xxx的目标格式
  • 若需精准匹配指定的alg_前缀字符串,可将正则改为/(")(alg_hash|alg_sort)/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:57:56