>>> 計算誤差
int(10.03*100)は1002になる。
10進数の計算を2進数で行うと誤差が生じるため。

>>> 真偽
数字の0と空の文字列が偽。これ以外は真。

>>> 計算精度
数値は全て倍精度浮動小数点数。

>>> 関数におけるローカル変数の使用
AWKの変数はグローバル変数。ただし、関数の引数に連ねた変数は当該関数内のローカル変数となる。

function 関数名(引数1,引数2,・・・, ローカル変数1,ローカル変数2,・・・)
* 慣例的に引数とローカル変数の間には十分なスペースを入れる。

>>> ファイルへのリダイレクト
">"を用いたリダイレクトは、前段の処理でファイルがクローズされていない場合、"追記"になる。

(例1)
print "aaa" > "./text.txt"
print "bbb" > "./text.txt"

text.txtの中身
aaa
bbb

(例2)
print "aaa" > "./text.txt"
close("./text.txt")
print "bbb" > "./text.txt"

text.txtの中身
bbb

>>> 配列要素の存在の確認
存在しない配列要素にアクセスすると、副作用でその配列要素を生じさせてしまう。
つまり、存在無しでも「存在確認する」ことにより存在有りになってしまう。
副作用なしに確認する方法は以下のとおり。

if ("添字" in 配列名)

ただし、"配列の配列"の場合にはエラーとなる。この場合は、ダミーで要素を1つ発生させて、length(配列名)が1であるか否かを確認することによって調べる。確認後、ダミーは削除する。

>>> 改行
print は print $0 の省略形でもある。
意図しない表示を避けるために、改行のみが目的の場合は print "" とする。

>>> 多次元配列の添字
多次元配列は連想配列により擬似的に実現される。
多次元配列の複数の添字はカンマで区切られる。
カンマは内部的に文字"\034"に置き換えられている。よって、カンマを含む添字全体を文字列で設定する場合、gsub等によりカンマを"\034"に置き換える必要がある。

>>> 文字 "[" の置換
文字 "[" はパターンマッチにおいて機能を有する文字であるため、当該文字の置換は通常の指定 "[" 、バックスラッシュによる指定 "\[" のどちらもエラーとなる。
以下のように指定する。
"[\133]"

また、複数の文字を指定する場合は、2文字目以降に置く。

(例) "[" と "]" の文字を指定する場合
NG:
/[[]]/ ---> [ ]内の1文字目に "[" 、2文字目に "]" を指定
OK:
/[][]/ ---> [ ]内の1文字目に "]" 、2文字目に "[" を指定




戻る