awk - 使用包含多个文件的数组

时间:2013-03-29 16:18:37

标签: bash unix awk

我是shell脚本的新手,我需要计算平均file1,然后计算结果的平均值和file2中的数字,到目前为止,我想出了这个,但它没有打印任何内容。 / p>

awk '{if ($FILENAME == "spring") array[$1]=($2+$3+$4+$5+$6+$7+$8)/7; if($FILENAME == "fall") array[$1]=(array[$1]+$2)/2 }  END { for (var in array) print var,array[var]}' ./spring ./fall

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

awk中没有印记。尝试删除$

awk 'FILENAME == "spring"{ array[$1]=($2+$3+$4+$5+$6+$7+$8)/7 }
   FILENAME == "fall"{ array[$1]=(array[$1]+$2)/2 }  
   END { for (var in array) print var,array[var]}' ./spring ./fall

简而言之,FILENAME是当前正在处理的文件的名称,但当FILENAME以字母开头时,$FILENAME相当于$0

答案 1 :(得分:1)

awk '{s+=$1}ENDFILE{print FILENAME,s/FNR;s=0}' RS=" " file1 file2

怎么样?
$ cat file1
1 2 3 4 5 6 7 8

$ cat file2
1 2

$ awk '{s+=$1}ENDFILE{print FILENAME,s/FNR;s=0}' RS=" " file1 file2
file1 4.5
file2 1.5