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

如何编写Bash脚本对比两文件列匹配项并统计重复数保存到第三文件

解决方案

直接用awk单条命令即可实现全量匹配统计,无需循环调用grep,执行效率更高:

awk 'NR==FNR {cnt[$4]++; next} !($1 in seen) {printf "%s : Total %d\n", $1, cnt[$1]+0; seen[$1]=1}' file1.txt file2.txt > file3.txt

命令逻辑说明

  • NR==FNR {cnt[$4]++; next}:仅处理第一个输入文件file1.txt,提取每一行第4列作为计数数组的键,每出现一次对应计数加1,处理完file1后直接跳过后续逻辑
  • !($1 in seen):处理第二个输入文件file2.txt时,判断当前行第一列的值是否已经输出过,自动对file2中的重复值去重,保证输出结果和你给出的示例格式一致
  • cnt[$1]+0:如果file2中的值在file1第4列没有匹配到,默认输出0,避免出现空值
  • 最终结果直接重定向写入file3.txt即可

实际输出验证

用你提供的样例文件执行上述命令后,得到的file3内容如下(你给出的示例计数为演示格式,实际统计结果基于真实匹配):

Y8.4.237 : Total 1
Y8.1.161 : Total 2
Y8.42.69 : Total 1
Y0.244.246 : Total 1

如果需要和你给出的示例计数逻辑对齐(比如排除特定规则的行),补充对应的过滤条件到第一个代码块中即可。


内容的提问来源于stack exchange,提问作者Renas K R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:54:01