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

AWK实现匹配Field1并插入对应Field2的方法求助

AWK实现名字对应编号插入的解决方案

嘿,这需求用AWK完全能搞定!我给你写个针对性的脚本,刚好能实现你要的效果,先看代码:

awk '
# 先处理File2,把名字和对应的编号存入关联数组
NR == FNR {
    map[$1] = $2
    next
}
# 再处理File1,按每3个字段一组拼接内容
{
    for (i=1; i<=NF; i+=3) {
        printf "%s %s %s %s ", $i, map[$i], $(i+1), $(i+2)
    }
    # 最后补充一个换行,让输出格式更规范
    print ""
}' File2 File1

代码逻辑解释

  • 处理File2:NR == FNR是AWK处理多文件的经典写法,当读取第一个文件(这里是File2)时,把每个名字作为数组map的键,对应的编号作为值存起来。
  • 处理File1:File1的结构是每3个字段为一组(名字+年龄+颜色),所以用循环每次跳过3个字段,依次取出每组的名字、年龄、颜色,然后按名字 编号 年龄 颜色的格式输出,其中编号就是从map数组里取出的对应值。
  • 换行处理:最后加print ""是为了确保输出结果末尾有正常的换行,避免内容粘在一行末尾。

运行这段代码后,就能得到你预期的输出:

JASON 9614 11 BLACK JOHN 5910 19 BROWN JOSH 5711 13 GOLD

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:49:32