如何使用 awk 包含 header

how to include header using awk

即使在使用 NR>1 之后,我仍然想念 header。有什么建议吗?

cat rm2

        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

awk 'NR>1{ if($NF>0) print [=11=]"\t"$(NF-1)/$NF; else print [=11=]"\t"$(NF-1)}' rm2

l1      0       0.1448  0.2295  0.2896  0.3362  0.3362  0.166   2.0253
l3      0.1395  0.1395  0.1395  0.1395  0.4421  0.4421  0.140   3.15786
l4      0.5779  0.138   0.09591 0.05014 0.138   0.5779  0.106   5.45189

awk 'NR==1; NR>1 ....' file

你想做的会写成:

awk 'NR>1{[=10=]=[=10=]"\t"$(NF-1)/($NF?$NF:1)}1' rm2

但是你为什么要这样做而不是仅仅调整你已经得到的脚本 () 通过简单地改变这一行在最后打印一个额外的字段:

print [=11=], max, (cnt?tot/cnt:0)

至:

ave = (cnt?tot/cnt:0)
print [=12=], max, ave, (ave?max/ave:max)