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

如何用AWK命令以冒号分隔合并两文件生成指定输出

用AWK实现两个文件内容的笛卡尔积输出

要实现将文件1的每一行与文件2的所有行按行1内容:行2内容格式配对输出,本质是求两个文件内容的笛卡尔积,用AWK可以通过以下方式实现:

核心命令

NR==FNR{arr[++len]=$0; next} {for(i=1;i<=len;i++) print $0":"arr[i]} 文件2 文件1

命令解释

  • NR==FNR:AWK中NR是当前处理的总记录数,FNR是当前处理的当前文件的记录数。当处理第一个传入的文件(此处为文件2)时,NR等于FNR,此时将文件2的每一行内容存入数组arr,next跳过后续语句,继续处理下一行。
  • 当处理第二个传入的文件(文件1)时,遍历数组arr的所有元素,将当前行内容与数组元素用冒号拼接后打印,即可得到文件1每行对应文件2所有行的配对结果。

示例执行

假设文件1名为f1.txt,文件2名为f2.txt,直接执行以下命令即可生成目标输出:

awk 'NR==FNR{arr[++len]=$0; next} {for(i=1;i<=len;i++) print $0":"arr[i]}' f2.txt f1.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:05:03