6 AWK の関数

AWK では、自分で関数を定義することもできますが、 デフォルトで使える関数も色々あります。 テキスト処理フィルタという性格から 文字列処理関数が主に用意されていますが、 数学関数なども用意されています。

数学関数には以下のようなものがあります。

int(x) は、C での floor(x) (x 以下の最大の整数) や ceil(x) (x 以上の最小の整数) とは違い、 int(1.5)=1, int(-1.5 )=-1 のようになります。

rand() は小数の値をランダムに返しますが、srand() を使わなければ、 AWK の実行の度に同じ列を繰り返し生成することになりますので、 srand(x) を使って初期値を変動させます。

しかし、AWK の実行の度に x (整数) が同じならば、 やはり同じ乱数列が生成されてしまいますので、 C ではプログラム実行時の時刻を使ってそれが常に変化するようにします。

AWK でも、x を省略して単に srand() とすると、 現在の時刻 (正確には 1970 年 1 月 1 日 00:00:00 からの秒数) を種にセットします。

文字列処理関数には以下のようなものがあります。

AWK では文字列の連結も容易に行なえ、並べて書けば連結、',' を入れて書けば 空白一つを入れて連結、となります。よって、

  a = "1" "234","5 6","7" " 89";
とすると a は "1234 5 6 7 89" となります。

その他に、以下のような関数もあります。

竹野茂治@新潟工科大学
2007年12月23日