
次のコードがあります。
TOTAL=0
COUNT=0
# a ratio of 10000 indicates that ILP # rejected was 0.
awk -v c=$COUNT -v t=$TOTAL
'BEGIN { FS=OFS="," }
NR==1 { $(NF+1)="RATIO" }
NR>1 && NF>3{ if($4==0) $(NF+1)=10000; else {$(NF+1)=$6/$4, c++, t=t+$4} }
{ print }' "$FILE" > temp.log
AVG=$(($TOTAL/$COUNT))
長すぎます。フィールドを含むファイルがあり、各行に新しいフィールドを追加しています。この場合、外部変数sumをelse
増やしたいと思います。c
t
私が得るエラーは、syntax error
直前にカンマを指すことですc++
。
私は他を読んだ。回答このコンマ構文を使用するので、この問題を解決する方法を知りたいです。
答え1
この問題とは別に指摘コメントから:
カンマは引数を区切るために使用されます。ステートメントを区切るにはセミコロン(または改行)が必要です。例を見る(セミコロン)、ジョブからステートメントを区切ります。
初期化する必要はありませんみんなそして計算シェルの変数もその値を簡単に更新できません。アッ;代わりにアッAVGを計算するには、以下を試してください。
awk 'BEGIN { FS=OFS="," }
NR==1 { $(NF+1)="ratio" }
NR>1 && NF>3{ if($4==0) $(NF+1) =10000; else { $(NF+1) =$6/$4; count++; total+=$4 } }
{ print }
END{ if(count) print "AVG: " total/count }' infile