AWK
AWKでは、関数を定義して使用することが可能である。
関数の定義は次のようになる。
AWKの変数は、引数を除いて全て大域変数であり、局所のスコープを持つのは引数として宣言された変数だけである。このため、技法として、関数定義で余分な引数を宣言し、それを局所変数として使う、ということが行なわれる。AWKでは、関数の呼び出し時に、実引数の個数が仮引数の個数より少なくても、省略とみなしエラーとしない。これを利用して、余分な引数を局所変数として使うのである。
このように関数を定義した上で,呼び出すときに引数を3つしか使わなければ、局所変数1以降は局所変数として扱える。構文上の区別は無いが、判読性を向上させるために両者の間に十分な空白を挿入するのが慣例になっている。
また、関数は再帰呼び出しもできる。
木村浩一(ハンドル名:Bruce)によるmawkのマルチバイト拡張。
1980年代後半頃までのバージョンアップにより登場したもので、SVR3の頃のUNIXに付属。旧バージョンと区別してnawk(new awk)とも。関数のユーザー定義などの機能が追加された。一つの真正の、といった感じで、他と区別する場合はone true awkなどとも呼ばれる。(BSDでは本家 UNIX とは別の実装になっているtoolも多いが)FreeBSD(バージョン5およびそれ以降)の/usr/bin/awkなどはこれである。大きな機能追加などは以前から無いが、現在もメンテナンスされている。 FreeBSD、NetBSD、OpenBSD、macOS、illumos、Android などで使用されている。