如何修改awk脚本统计CSV中同行共现姓名对的出现频次
共现姓名对计数实现方案
原脚本仅通过二维数组标记姓名对是否存在,未做次数累加,只需把数组赋值逻辑改为计数自增,输出时拼接计数值即可。
修正后完整命令
awk -F, '{ for(i=1;i<NF;i++){ for(j=i+1;j<=NF;j++){ if($i > $j){ k[$i][$j]++ }else{ k[$j][$i]++ } } } }END{ for(n in k){ for(l in k[n]){ print n,",",l,",",k[n][l] } } }' 2016.csv
改动说明
- 把原脚本中
k[$i][$j]的空赋值替换为k[$i][$j]++,每匹配到一次同组姓名对,对应计数自动加1 - 保留原脚本的姓名字典序排序逻辑,避免同一对姓名因前后顺序不同被重复统计
- 输出阶段直接读取二维数组中存储的计数,拼接到每行末尾,符合要求的输出格式
运行效果
使用提供的示例输入运行后,输出结果如下,和预期完全一致:
Zhichen Gong , Huanhuan Chen , 1 Zhichuan Huang , Tiantian Xie , 1 Zhichuan Huang , Ting Zhu , 2 Zhichuan Huang , Jianwu Wang , 1 Zhichuan Huang , Qingquan Zhang , 1 Zhifei Zhang , Yang Song , 1 Zhifei Zhang , Wei Wang 0063 , 1 Zhifei Zhang , Hairong Qi , 1
内容的提问来源于stack exchange,提问作者Nick15
相关产品推荐
相关产品推荐

