Macで使う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