ループ内のファイル名の印刷方法は?私はあなたが-v
フラグを使用してawkスクリプトでbashの変数を使用することができますawkループでの挿入方法
awk '{sum +=$4;n++}END{print $i\t sum/n}' $i
ループ内のファイル名の印刷方法は?私はあなたが-v
フラグを使用してawkスクリプトでbashの変数を使用することができますawkループでの挿入方法
awk '{sum +=$4;n++}END{print $i\t sum/n}' $i
したいわけ
for i in `ls *cov`
do
awk '{sum +=$4;n++}END{print sum/n}' $i
done
:私は、ファイル名と同じ行の4列の平均値を印刷したいです:
awk -v file=$i '{sum +=$4;n++}END{print file\t sum/n}' $i
しかし、またbuilt in awk variableFILENAME
あります:
awk '{sum +=$4;n++}END{print FILENAME\t sum/n}' $i
これは、変数を渡すことがないので、はるかにクリーンです。
ループを失う(why-is-using-a-shell-loop-to-process-text-considered-bad-practiceを参照)だけを使用します。
awk -v OFS='\t' '{sum+=$4} ENDFILE{print FILENAME, (FNR>0 ? sum/FNR : 0); sum=0}' *cov
上記はENDFILEのためのGNU AWKを使用して、他のawksのための簡単な微調整がありますが、重要なものは以下のとおりです。
n
は不要です。