AWKに用意されている関数には以下のようなものがある。
int(x) | 引数 x の整数部分を返す。 |
---|---|
sqrt(x) | 引数 x の平方根を返す。 |
exp(x) | 引数 x の指数を返す。 |
log(x) | 引数 x の自然対数を返す。 |
sin(x) | 引数 x の sin を返す(x はラジアン単位)。 |
cos(x) | 引数 x の cos を返す(x はラジアン単位)。 |
atan2(y, x) | y / x のアークタンジェントを返す。 |
rand() | 0 以上 1 未満の乱数を返す。 |
srand(x) | 乱数の種 seedを設定する。 |
index(in, find) | 文字列 in の中で,文字列 find の位置を返す。文字列 in に,文字列 find が 存在しないときは 0 を返す。 |
---|---|
length(string) | 文字列 string の長さ(文字数)を返す。なお,length(5*20) は length("100") と解釈されるので 3 を返す。 |
match(string, regexp) | 文字列 string の中から,正規表現 regexp にマッチする文字列の開始文字位置を返す。マッチしないときは 0 を返す。match 関数は同時に,組込み変数 RSTART にマッチする文字列の開始位置,組込み変数 RLENGTH にその長さを返す(マッチしないときはそれぞれ 0 と -1 を返す)。 |
split(string, array, fieldsep) | 文字列 string を,区切り文字 fieldsep でフィールドに区分し,各フィールドを配列 array に格納する。関数の値としては,フィールドの数を返す。 例:split("a,bc,def", table, ",") は 3 を返し,table[1]="a",table[2]="bc",table[3]="def" になる。 |
sprintf(format, expression,...) | 式 expression を,書式 format で変換した結果の文字列を返す。 |
sub(regexp, replacement, target) | 文字列 target の,正規表現 regexp にマッチする文字列を 1 回だけ,置き換え文字列 replacement で書き換える。返す値は,置き換えられた数である。すなわち,置き換えがあったら 1,なかったら 0。 |
gsub(regexp, replacement, target) | 文字列 target の,正規表現 regexp にマッチする全ての文字列を,置き換え文字列 replacement で書き換える。返す値は,置き換えられた数である。 |
substr(string, start, length) | 文字列 string の,文字位置 start から,長さ length の文字列を返す。 |
tolower(string) | 文字列 string 中の英大文字を英小文字に変換した文字列(小文字はそのまま)を返す。 |
toupper(string) | 文字列 string 中の英小文字を英大文字に変換した文字列(大文字はそのまま)を返す。 |
getline | カレント入力ファイルからレコードを入力し,入力レコードはフィールドに分割される。 |
---|---|
getline var | レコードを変数 var に読み込む。入力レコードはフィールドには分解されない。$0, NF, NR, FNR は変更されない。 |
getline < file | 入力ファイル file からレコードを入力し,入力レコードはフィールドに分割され,NF,$0, $1, ..., $NR は変更される。NR, FNR は変更されない。 |
getline var < file | 入力ファイル file から変数 var にレコードを入力する。NF,$0, $1, ..., $NR, NR, FNR は変更されない。 |
command | getline | コマンド command の出力をパイプを通じて getline で受ける。レコードをフィールドに分割し,NF をセット して $0 を再計算する。このとき,NR と FNR は変更されない。close(command) 処理が必要。 |
command | getline var | コマンド command の出力をパイプを通じて getline に渡し,さらに変数 var に格納する。どの組み込み変数も変更されず,読み込んだレコードのフィールド分割も行われない。close(command) 処理が必要。 |
close(filename) close(comand) | 入出力ファイル filename またはパイプ command を閉じる。 |
system(command) | オペレーティングシステムのコマンドを実行する。 |