Bash “简化awk”;第n列总和“;

Bash “简化awk”;第n列总和“;,bash,awk,simplify,Bash,Awk,Simplify,你能帮我简化一下吗 awk 'BEGIN{FS=OFS=","}{rank=1/((1/$6)+(1/$10)+(1/$14)+(1/$18)+(1/$22));print $0,rank}' test.csv 我知道for循环应该是: for(i=6; i<=NF; i+=4) 样本输出: 04/12/10 01:15,1291425300,279,41,6,24,71,39,12,1,356,25,4,29,32,10,1,1,170,27,16,8,0.4543080939947

你能帮我简化一下吗

awk 'BEGIN{FS=OFS=","}{rank=1/((1/$6)+(1/$10)+(1/$14)+(1/$18)+(1/$22));print $0,rank}' test.csv
我知道for循环应该是:

for(i=6; i<=NF; i+=4)
样本输出:

04/12/10 01:15,1291425300,279,41,6,24,71,39,12,1,356,25,4,29,32,10,1,1,170,27,16,8,0.454308093994778
21/05/14 16:45,1400690700,147,28,80,13,99,7,121,11,107,19,132,12,119,24,40,10,154,25,161,20,2.49273678094131
09/10/07 09:45,1191923100,152,56,201,35,115,47,157,29,149,47,119,19,131,40,30,11,216,136,213,64,4.50004789527607
08/06/07 00:30,1181262600,133,47,268,41,93,26,282,40,151,30,249,39,160,46,191,45,164,64,216,42,8.2601610016789
13/11/09 06:15,1258092900,1043,1462,1163,1456,789,1111,930,1143,954,1460,1366,1469,831,891,728,954,1092,1316,1381,1492,252.467979545275
10/03/98 19:30,889558200,789,1240,1176,1262,,,,,,,,,,,,,162,271,1006,283,#DIV/0!
像这样:

BEGIN{FS=OFS=","}{rank=0;for(i=6;i<=22;i+=4)rank+=($i ? 1/$i : 0);print $0,rank}
BEGIN{FS=OFS=“,”}{rank=0;对于(i=6;i如下:

BEGIN{FS=OFS=","}{rank=0;for(i=6;i<=22;i+=4)rank+=($i ? 1/$i : 0);print $0,rank}

BEGIN{FS=OFS=“,”}{rank=0;for(i=6;i“不确定awk如何处理被零除的问题”:学会运行简单的测试来回答自己的问题:
awk'BEGIN{print 6/0}/dev/null
产生
awk:0除的源代码行号1
。祝好运。源代码行号1`“不确定awk如何处理被零除的问题。”:学会运行简单的测试来回答你自己的问题:
awk'BEGIN{print 6/0}/dev/null
products
awk:division by zero源代码行号1
。祝你好运。源代码行号1`哦,是的,错过了被零除的部分。如果($i+0==0){$i=99999},你会在哪里添加类似于
if($i==0){$i=99999}或者{$i==i}
处理零的除法?解决了它,谢谢!
awk'BEGIN{FS=OFS=“,”{rank=0;for(i=6;是的,错过了零的除法部分。如果($i+0==0){$i=99999}或者{$i==i}
处理零的除法,谢谢!
awk'BEGIN{FS=OFS=“,”,“}{rank=0;for(i=6;i=6;i>
$ awk '
BEGIN { FS=OFS="," } 
{
   for(i=6;i<=NF;i+=4)     # every 4th column
       if($i+0==0) {       # if there is a 0 divisor
           rank="#DIV/0!"  # set rank to something static
           break           # break from for
       } 
       else 
           rank+=1/$i      # sum every 4th
   print $0,rank           # output
   rank=0                  # reset
}' file
04/12/10 01:15,1291425300,279,41,6,24,71,39,12,1,356,25,4,29,32,10,1,1,170,27,16,8,2.20115
21/05/14 16:45,1400690700,147,28,80,13,99,7,121,11,107,19,132,12,119,24,40,10,154,25,161,20,0.401166
09/10/07 09:45,1191923100,152,56,201,35,115,47,157,29,149,47,119,19,131,40,30,11,216,136,213,64,0.22222
08/06/07 00:30,1181262600,133,47,268,41,93,26,282,40,151,30,249,39,160,46,191,45,164,64,216,42,0.121063
13/11/09 06:15,1258092900,1043,1462,1163,1456,789,1111,930,1143,954,1460,1366,1469,831,891,728,954,1092,1316,1381,1492,0.0039609
10/03/98 19:30,889558200,789,1240,1176,1262,,,,,,,,,,,,,162,271,1006,283,#DIV/0!