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

求单行命令:对比两文件按Key取对应较小数值输出

单行命令实现按Key取两个文件中的较小数值

嘿,这有个精准的单行命令能满足你的需求——对比两个逗号分隔的Key-Value文件,为每个Key保留数值更小的那一行:

join -t, File1 File2 | awk -F, '{print $1","($2<$3?$2:$3)}'

来拆解下这个命令的逻辑:

  • join -t, File1 File2:用逗号作为字段分隔符,将两个文件按第一列(也就是Key)进行合并,输出的每一行格式是 KEY,File1的数值,File2的数值
  • awk -F, '{print $1","($2<$3?$2:$3)}':同样以逗号分割每行,判断第二列(File1的数值)和第三列(File2的数值)的大小,输出Key加上较小的那个数值

示例验证

输入文件内容

File1:

KEY1,4999
KEY2,3999
KEY3,5999
KEY4,10999

File2:

KEY1,11905
KEY2,6872
KEY3,2393
KEY4,296360

执行命令后输出

KEY1,4999
KEY2,3999
KEY3,2393
KEY4,10999

额外补充:如果Key顺序不一致怎么办?

要是两个文件的Key排列顺序不一样,先给两个文件排序再合并就行,命令调整为:

join -t, <(sort File1) <(sort File2) | awk -F, '{print $1","($2<$3?$2:$3)}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:50:32