2

我需要比较特定的列(第 3 列和第 6 列),并且在定义了两个数字的情况下,将第 3 列与第 6 列的比率添加为额外的第 7 列。

我的档案

Col1 col2 col3 col4 col5 col6 
a    s318  14   -    -     -
b    s319  25   b   t568   15    
c    s320  8    c   t569   12   
-    -     -    d   t570   20      
f    s322  42   f   t571    5

预期产出

Col1 col2 col3 col4 col5 col6 ratio
a    s318  14   -    -     -     0
b    s319  25   b   t568   15    1.67
c    s320  8    c   t569   12    0.67
-    -     -    d   t570   20    0
f    s322  42   f   t571    5    8.4

我使用awk脚本来获得结果,但它显示awk: (FILENAME=file.txt FNR=4) fatal: division by zero attempted.

awk 'NR==1{$7="ratio"}NR>1{if($3!=$6)print $7=($3)/($6)}{print}' file.txt

我需要帮助; 你能解决这个问题吗?

4

1 回答 1

3

使用三元运算符检查第 6 列的值是否为正:

$ awk 'NR==1{$7="ratio"}NR>1{ $7=$6>0?$3/$6:0}{print}' OFS='\t' file 
Col1 col2 col3 col4 col5 col6 ratio
a    s318 14   -    -    -    0
b    s319 25   b    t568 15   1.66667
c    s320 8    c    t569 12   0.666667
-    -    -    d    t570 20   0
f    s322 42   f    t571 5    8.4
于 2013-09-06T06:42:04.020 回答