Let's GAWK! とにかく使うJGAWK その9

 みなさん こんにちわ

 awkで憶えておくべきことはあと僅かです。今回の「組み込み関数」に加えて「組み込み変数」「連想配列」「正規表現」といったところです。いずれも完璧にマスターするのは大変ですが、ある程度使うためにはちょこっと知っていれば十分です。

組み込み関数

 awkには数値・文字列を操作するための関数(ファンクション)があらかじめ準備されています。数値を操作する算術関数は三角関数、指数関数などですが、日常的には「平方根」ぐらいしか利用しないと思うのであっさり済ませます。

sqrt(x)
xの平方根を返す。

 awkの中心はなんといっても文字列の操作です。
 ざっと次のような文字列操作関数があります。「テキストデータ料理学」翔泳社 p121から引用させていただきました。説明はハッシー流にアレンジしてあります。

match(s, r)
文字列sの正規表現rにマッチする部分の先頭と長さを調べる
sub(r, s, t)
文字列tの正規表現rにマッチする部分を文字列sで置換する
gsub(r, s, t)
マッチするすべての部分を置換する場合
splits(s, a, r)
文字列sを文字列rを区切りとして配列aに分解する
index(s, t)
文字列sにはじめて文字列tが現れた位置を返す
jindex(s, t)
indexの日本語対応版
substr(s, i, n)
文字列sのi番目からはじまるn文字を返す
jsubstr(s, i, n)
substrの日本語対応版
length(s)
文字列sの長さを返す
jlength(s)
lengthの日本語対応版
sprintf(s, 式)
printfの文字列出力版
toupper(s)
文字列sを大文字に
tolower(s)
文字列sを小文字に

 いうまでもなく「全部を知っている必要はありません」(^^)。私自身未だ一度も使ったことがない関数もあります。まずは「置換 sub,gsub」を押さえましょう。あとで詳しく取り上げます。

 この他にいわゆるコマンドとしてprint, printf, getline, system, close,delete などがあります。



 関数(ファンクション)を使う場合、その関数の「作用」と「返す値」を区別する必要があります。引数(カッコの中に書くやつ、ちなみにこれは「ひきすう」と読みます)がひとつの場合、概ね関数の作用と関数が返す値は同じです。例えば平方根を求めるsqrtを使う場合、

   b=2;
   a=sqrt(b);

とやれば、aには2の平方根が代入されます。

 しかしながら引数が複数の関数ではそう単純ではありません。次回sub, gsubを使って説明します。また、これまで断片的に取り上げてきた「演算子」についてもまとめます。



 初出 NIFTY-Serve「みんみんネット」1996/09/18 (Wed) 07:29:19