file - linux 中的列聚合

标签 file bash sed awk aggregation

我有这种格式的巨大文本文件:

aaa bbb 1      
aaa ccc 2      
aaa ddd 3      
bbb ww 1      
bbb kio 3      

我想聚合它,结果应该是:

aaa bbb 1/6  
aaa ccc 2/6  
aaa ddd 3/6  
bbb ww 1/4  
bbb kio 3/4  

第 3 列 - 概率 p(y|x)

我应该如何使用 awk、sed 来做到这一点?

最佳答案

awk 'NR==FNR{a[$1]+=$3;next}{printf("%s/%d\n",$0,a[$1])}' ./infile ./infile

输出

$ awk 'NR==FNR{a[$1]+=$3;next}{printf("%s/%d\n",$0,a[$1])}' ./infile ./infile
aaa bbb 1/6
aaa ccc 2/6
aaa ddd 3/6
bbb ww 1/4
bbb kio 3/4

关于file - linux 中的列聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8984652/

相关文章:

C++ 从文件中读取数字并存储在 vector 中

c - 获取注册文本文件的第一个计数

linux - 将人类可读的时间范围转换为相关的秒数

javascript - 你如何使用 JavaScript 在 QtQuick Qml 中进行大量数学运算

linux - 命令 'adduser' 中包含哪些命令?

sed - 解释这个 sed 条件分支行为

java - Relativise引入冗余上行目录 ".."

python - 在 python 中使用 glob 不会返回最新的文件路径

linux - 如何查找网络接口(interface)名称

linux - 从命令行乘以 .dat 文件中的常数