如何打印最大,其余的平均每一行 [英] How to print maximum and average of the rest for every row

查看:114
本文介绍了如何打印最大,其余的平均每一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以打印这样就可以使用AWK?

输入

  T1 T2 T3 T4 TN
L1 0 0.1448 0.2295 0.2896 0.3362
13 0.1395 0.1395 0.1395 0.1395 0.4421
14 0.5779 0.138 0.09591 0.05014 0.138

输出

  T1 T2 T3 T4 TN最大avg.of.rest
L1 0 0.1448 0.2295 0.2896 0.3362 0.3362 0.166
13 0.1395 0.1395 0.1395 0.1395 0.4421 0.4421 0.140
14 0.5779 0.138 0.09591 0.05014 0.138 0.114 0.5779


解决方案

  $猫tst.awk
BEGIN {OFS =\\ t的; OFMT =%3F}
NR == 1 {
    打印$ 0最大,avg.of.rest
    下一个
}
{
    最大= $ 16
    对于(i = 3; I< = NF;我++){
        最大=($ I>最大$ I:最大)
    }    TOT = CNT = 0
    对于(i = 2; I< = NF;我++){
        如果($ I!=最大值){
            TOT + = $ I
            CNT ++
        }
    }    打印$ 0,最大值(CNT TOT / CNT:0)
}$ AWK -f tst.awk文件
        T1 T2 T3 T4 TN最大avg.of.rest
L1 0 0.1448 0.2295 0.2896 0.3362 0.3362 0.166
13 0.1395 0.1395 0.1395 0.1395 0.4421 0.4421 0.140
14 0.5779 0.138 0.09591 0.05014 0.138 0.106 0.5779

Is it possible to print like this may be using awk ?

input

        t1      t2      t3      t4      tn
l1      0       0.1448  0.2295  0.2896  0.3362
l3      0.1395  0.1395  0.1395  0.1395  0.4421
l4      0.5779  0.138   0.09591 0.05014 0.138

output

        t1      t2      t3      t4      tn      max      avg.of.rest
l1      0       0.1448  0.2295  0.2896  0.3362  0.3362  0.166
l3      0.1395  0.1395  0.1395  0.1395  0.4421  0.4421  0.140
l4      0.5779  0.138   0.09591 0.05014 0.138  0.5779  0.114

解决方案

$ cat tst.awk
BEGIN { OFS="\t"; OFMT="%.3f" }
NR==1 {
    print $0, "max", "avg.of.rest"
    next
}
{
    max = $2
    for (i=3;i<=NF;i++) {
        max = ($i > max ? $i : max)
    }

    tot = cnt = 0
    for (i=2;i<=NF;i++) {
        if ($i != max) {
            tot += $i
            cnt++
        }
    }

    print $0, max, (cnt?tot/cnt:0)
}

$ awk -f tst.awk file
        t1      t2      t3      t4      tn      max     avg.of.rest
l1      0       0.1448  0.2295  0.2896  0.3362  0.3362  0.166
l3      0.1395  0.1395  0.1395  0.1395  0.4421  0.4421  0.140
l4      0.5779  0.138   0.09591 0.05014 0.138   0.5779  0.106

这篇关于如何打印最大,其余的平均每一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆