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
相关产品推荐
相关产品推荐

