Awk 将所有列除以第一列

Awk 将所有列除以第一列,awk,Awk,我有一个tab delim文件 1A 865 508 512 146 139 499 504 541 539 8 11 62 67 1 1 1 1 30 40 4 3 0 2 0 0 0 0 1B 34 12 12

我有一个tab delim文件

1A      865     508     512     146     139     499     504     541     539     8       11      62      67      1       1       1       1       30      40      4       3       0       2       0       0   0 0
1B      34      12      12      2       5       12      14      19      18      1       1       2       0       0       0       0       0       1       1       0       0       0       0       0       0   0 0
我需要将col3中的每一个col除以col2,然后逐行将结果乘以100(四舍五入到2位小数)

所以我有

1A  865 58.73  59.19  16.88  16.07  57.69  58.27  62.54  62.31  0.92  1.27  7.17   7.75   0.12  0.12  0.12  0.12  3.47  4.62  0.46  0.35  0.00  0.23  0.00  0.00  0.00  0.00
1B  34 35.29  35.29  5.88   14.71  35.29  41.18  55.88  52.94  2.94  2.94  5.88   0.00   0.00  0.00  0.00  0.00  2.94  2.94  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
我在做什么

awk 'BEGIN {FS=OFS="\t"} {for (i=3; i<=NF; i++) printf "%.2f\t",($i/=$2)*100;}1'
使用awk:

awk 'BEGIN{FS=OFS="\t"}{for(i=3;i<=NF;i++) $i=sprintf("%.2f",$i/$2*100)}1' file
awk'BEGIN{FS=OFS=“\t”}{for(i=3;i
awk 'BEGIN{FS=OFS="\t"}{for(i=3;i<=NF;i++) $i=sprintf("%.2f",$i/$2*100)}1' file
1A 865 58.73 59.19 16.88 16.07 57.69 58.27 62.54 62.31 0.92 1.27 7.17 7.75 0.12 0.12 0.12 0.12 3.47 4.62 0.46 0.35 0.00 0.23 0.00 0.00 0.00 0.00 1B 34 35.29 35.29 5.88 14.71 35.29 41.18 55.88 52.94 2.94 2.94 5.88 0.00 0.00 0.00 0.00 0.00 2.94 2.94 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00