1

私はシェルスクリプトを初めて使用します.file1の平均を計算し、結果の平均とfile2の数値を計算する必要があります.これまでのところ、これを思いつきましたが、何も出力しません.

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

この問題を解決する方法はありますか?

4

2 に答える 2

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

于 2013-03-29T16:22:27.013 に答える
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
于 2013-03-29T16:26:13.403 に答える