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

如何统计文本首列元素出现次数并保留第二列信息?

需求与问题描述

输入文件内容如下:

a1 D1
b1 D1
c1 D1
a1 D2
a1 D3
c1 D3

需要统计第一列元素的出现次数,同时保留第二列信息,以下两种输出格式均可接受:

可选输出1

3 a1 D1,D2,D3
1 b1 D1
2 c1 D1,D3

可选输出2

3 a1 D1
1 b1 D1
2 c1 D1
3 a1 D2
3 a1 D3
1 c1 D3

尝试用sort -k 1 input | uniq -c <keep col2>组合命令和awk工具均未成功,寻求可行实现方案。


可行实现方案

实现可选输出1(聚合第二列)

用awk可直接完成,无需额外排序(若不需要输出按第一列排序),命令如下:

awk '{count[$1]++; vals[$1] = vals[$1] (vals[$1] ? "," : "") $2} END {for (key in count) print count[key], key, vals[key]}' input

若需要输出按第一列排序,追加sort -k2即可:

awk '{count[$1]++; vals[$1] = vals[$1] (vals[$1] ? "," : "") $2} END {for (key in count) print count[key], key, vals[key]}' input | sort -k2

实现可选输出2(每条记录带总次数)

先用awk统计第一列的总次数,再遍历原文件输出每条记录加对应次数:

awk 'NR==FNR{count[$1]++; next} {print count[$1], $0}' input input

若需要输出按第一列排序,追加sort -k2:

awk 'NR==FNR{count[$1]++; next} {print count[$1], $0}' input input | sort -k2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:35:18