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

基于匹配键替换文件对应条目内容的技术实现需求

解决方案:用awk实现字段匹配替换

可以使用awk工具完成这个需求,它能精准处理带特殊字符的文本字段匹配与替换,完整保留引号内的所有内容。

实现脚本

BEGIN {
    # 预读取File2,构建Key到目标内容的映射
    while ((getline line < "File2") > 0) {
        if (match(line, /^[0-9]+\s+("[^"]+")\s+("[^"]+")\s+\|$/, arr)) {
            key_map[arr[1]] = arr[2]
        }
    }
    close("File2")
}

# 处理File1的每一行
{
    if (match($0, /^([0-9]+)\s+("[^"]+")\s+("[^"]+")\s+\|$/, arr)) {
        num = arr[1]
        key = arr[2]
        content = arr[3]
        
        # 匹配到Key则替换内容
        if (key in key_map) {
            content = key_map[key]
        }
        
        # 按原格式输出
        printf("%s   %s   %s   |\n", num, key, content)
    } else {
        # 不符合格式的行直接保留输出
        print $0
    }
}

运行方法

  1. 将上述脚本保存为replace_content.awk
  2. 在终端执行命令:
awk -f replace_content.awk File1

工作原理

  1. 预加载映射表:在BEGIN块中读取File2,通过正则匹配提取每个条目的Key(第二个带引号字段)和对应内容(第三个带引号字段),存储到关联数组key_map中。
  2. 处理目标文件:遍历File1的每一行,同样用正则提取数字、Key、原内容;如果Key存在于key_map中,就替换内容,最后按原格式输出;未匹配的行直接保留原样。
  3. 特殊字符兼容:通过匹配完整的带引号字段,确保引号内的空格、特殊符号(如#@!、单引号)完全保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:02:56