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

如何修改awk命令实现target.txt的foo、bar替换为source.txt对应列内容

适配双字段替换的awk命令

根据你的需求,给出两种常用场景的可直接运行命令:

场景1:保留source列自带的方括号

awk 'NR==FNR {f1[NR]=$1; f2[NR]=$2; next} /foo/{++i; gsub("foo", f1[i]); gsub("bar", f2[i])} 1' source.txt target.txt > output.txt

场景2:去掉source列的方括号(替换后target的括号内无多余方括号)

awk 'NR==FNR {gsub(/\[|\]/,"",$1); gsub(/\[|\]/,"",$2); f1[NR]=$1; f2[NR]=$2; next} /foo/{++i; gsub("foo", f1[i]); gsub("bar", f2[i])} 1' source.txt target.txt > output.txt
逻辑说明
  • 读取source.txt时,按行拆分两列分别存入两个数组,下标对应source的行号
  • 读取target.txt时,只有包含foo的行才触发替换逻辑,按匹配到的顺序依次取source对应行的列内容替换foo和bar
  • 所有不含foo的行(空行、含=、(、)等特殊符号的行)都会原样输出,完全匹配你的补充要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 05:51:04