如何使用awk包含标头

时间:2015-03-11 15:10:10

标签: awk

即使在使用NR> 1后我仍然缺少标题。有什么建议吗?

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 $0"\t"$(NF-1)/$NF; else print $0"\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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

你要做的就是写下:

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

但是你为什么这样做而不是仅仅调整你已经获得的脚本(https://stackoverflow.com/a/28988712/1745001)来在最后打印一个额外的字段,只需更改这一行:

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

为:

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