awk处理文本按关键词分类(相同关键词并在一类)

处理文本:
M1179-1 function=deletion;      1263
M1179-1 function=insertion;     872
M3-S11  function=deletion;      1278
M3-S11  function=insertion;     898
M1159-1 function=deletion;      878
M1159-1 function=insertion;     859
我想按照第二列信息进行分类生成如下结果:
function  M1179-1  M3-S11 M1159-1
deletion  1263        1278     878
insertion  872         898      859
---------------------------------------------------------------------------------------------

awk -F'[=; ]+' '{a[$1];b[$3];c[$1,$3]=$NF}END{printf $2" ";for(i in a)printf i" ";print"";for(i in b){printf i" ";for(n in a)printf c[n,i]" ";print ""}}' file |column -t
如果我同时希望可以计算出每一行的数值之和以及对比总和的比例,应该怎么做呢? 也就是: 我想生成如下结果: function  M1179-1  M3-S11 M1159-1 total    ratio deletion  1263          1278      878          3416  0.565    ####3419/(3419+2629) insertion  872            898        859            2629  0.435    ####2629/(3419+2629)保留3位有效小数 有什么方法可以实现么?
——————————————————————————————————
1 awk -F'[ =;]+' '{f[$1];a[$1" "$3]=$4;t[$3]+=$4;ta+=$4}END{printf "function";for(i in f) printf "\t%s",i; printf "\ttotal\tratio\ndeletion"; for(i in f) printf "\t%d",a[i" deletion"]; printf "\t%d\t%0.3f\ninsertion",t["deletion"],t["deletion"]/ta; for(i in f) printf "\t%d",a[i" insertion"];printf "\t%d\t%0.3f\n",t["insertion"],t["insertion"]/ta}' infile
2 ------------------------------------------------------------------------------------
3 function        M1159-1        M3-S11        M1179-1        total                ratio
4 deletion        878                1278        1263        3419        0.565
5 insertion        859                898                872                2629        0.435

 

转载于:https://www.cnblogs.com/huang6894/p/3471720.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值