数値合計
選択した数値の合計を計算するスクリプト
BEGIN{
sum=0;dq="\""
}
/^ch/{
num=substr($6,2) #8/12 修正
sum+=num
}
END{
sum=dq sum
print "ch",0,0,5,0,sum
}
選択した数値の合計を計算するスクリプト
BEGIN{
sum=0;dq="\""
}
/^ch/{
num=substr($6,2) #8/12 修正
sum+=num
}
END{
sum=dq sum
print "ch",0,0,5,0,sum
}
最大値を求めるユーザー定義関数です。
最小値の場合は、4行目の不等号の向きを変更します。
※表記は、max ⇒ min とした方が良いですね。
function max(val,num){ # 最大値
vmax=val[1]
for(i=1;i<=num;i++){
if(val[i]>vmax){
vmax=val[i]
}
} # for
{return vmax}
} # function
| 固定リンク | コメント (0) | トラックバック (0)
今回は、 y座標基準(下⇒上)のソートを追加しています。
座標を配列に組込む際に、x座標と y座標を入替。
数値列のソートは、列の最初の数字だけが対象となります。
| 固定リンク | コメント (0) | トラックバック (0)
前回のユーザー定義関数を利用して、作図済の円の内側に、左側から順に
番号を作図する外部変形用スプリクトです。
円データは、"jwc_temp.txt"に作図順に書出されるので、
x,y座標をx座標基準で昇順ソートしています。

| 固定リンク | コメント (0) | トラックバック (0)
AWKには、ソート機能がないので、ユーザー定義関数を利用することになります。
公開されているスプリクトを、外部変形用に一部だけ修正したユーザー定義関数です。
function sort(arry,n){ # 昇順
for(i=2;i<=n;i++){
for (j=i;j>1 && arry[j-1]-arry[j]>0;j--){
temp=arry[j-1]
arry[j-1]=arry[j]
arry[j]=temp
} # for j
} # for i
} # function
※arry[j-1]-arry[j]>0 と arry[j-1]>arry[j]は数式上は等価ですが、
前者にすることで、複数フィールドの数列をソートすることができます。
| 固定リンク | コメント (0) | トラックバック (0)
備忘録です。
AWKでは、数式によって数値を自動的に文字列に変換してくれますが、
デフォルトの有効桁数が、"%.6g"(6桁) なので、
何も設定しないと、1234.567は、1234.57に変換されてしまいます。
組込変数 "CONVFMT"を利用し、CONVFMT="%.15g"と記述すると、
15桁まで有効になります。
| 固定リンク | コメント (0) | トラックバック (0)
awkでは、文字列定数をダブルクォーテーション「"」で囲って表現しますが、
ダブルクォーテーションを文字列として扱う場合は、
バックスラッシュ「\」で始まるエスケープシーケンス、「\"」で表現します。
文字を扱う外変では、「dq="\""」で初期設定しておくと、わかりやすいです。
また、バックスラッシュは、「"\\"」となります。
※ワンライナーでのハット^の追記 (gawkm115の場合)
/^ / ⇒ /^^ /
< ⇒ ^<
> ⇒ ^>
&& ⇒ ^&^&
|| ⇒ ^|^|
| 固定リンク | コメント (0) | トラックバック (0)
awkスクリプトで絶対値を計算するには、ユーザー定義関数が必要になります。
if文を使ったスプリクトは、
function abs(x){if(x<0){return -x}else{return x}}
となりますが、elseは省略できるので、
function abs(x){if(x<0){return -x}{return x}}
ユーザー定義関数は、どこに記述しても基本的にはOKのようですが、
END文以降に記述するとわかりやすいかもしれません。
| 固定リンク | コメント (0) | トラックバック (0)
四角/円のソリッドデータを書出しするバッチファイルです。
このままでは外変として使用できませんが・・・・・参考です。m(__)m
| 固定リンク | コメント (4) | トラックバック (0)
最近のコメント