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

如何将三次awk调用合并为一次,实现去重统计目标列数值数量的功能?

一次awk调用实现需求的方案

你可以直接把过滤、去重、计数逻辑合并到同一条awk命令中,不需要多管道传递,实现代码如下:

awk -F ',' '$1 <= -700 && !seen[$3]++ { count++ } END { print count }' tmp

逻辑说明

  • 用-F ','指定字段分隔符为逗号,等价于你原命令中的FS=","配置
  • 第一重判断$1 <= -700筛选出符合数值要求的行
  • 第二重判断!seen[$3]++利用awk数组的特性实现去重:同一个$3值第一次出现时条件成立,后续重复出现时条件自动不生效
  • 只有同时满足以上两个条件时,才会对计数器count执行加1操作,最终在END块输出的count值就是你需要的去重后总数量

该命令输出结果和你原来的三次awk管道命令完全一致,同时减少了进程创建和管道IO开销,执行效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:06:03