awk
の発展
このマニュアルでは、POSIX規格に従ったGNUのawk
処理系について
の説明をしている。多くのawk
ユーザーは、Version 7 UNIX上でのオリジ
ナルawk
だけを知っている(この処理系は 4.3 --RenoまでのBerkeley UNIX
上のawk
の元となった。Berkeley UNIX の リリース4.4 では、システム
のawk
にgawk
2.15.2を使用している)。この章ではawk
言
語の進化を、(より詳しい説明のある場所の)クロスリファレンスを交えて手短に
説明する。
awk
言語はVersion 7 Unix (1978)と、System V Release 3.1 (1987)で最初に
作られた新しいバージョンとの間で相当に進化した。このセクションでは変更と、
それについてのクロスリファレンスを要約する。
awk
の文と行を参照).
delete
文 (セクション The delete
Statementを参照).
do
-while
文
(セクション The do
-while
Statementを参照).
atan2
, cos
, sin
, rand
, srand
(セクション Numeric Built-in Functionsを参照).
gsub
, sub
, match
(セクション Built-in Functions for String Manipulationを参照)。
close
とsystem
(セクション Built-in Functions for Input/Outputを参照)。
ARGC
, ARGV
, FNR
, RLENGTH
,
RSTART
,SUBSEP
(セクション 組み込み変数を参照)。
awk
プログラムで破られていた演算子の優先順位を
Cと同じにした(セクション Operator Precedence (How Operators Nest)を参照)。
FS
にセットする値
(セクション フィールドの分割方法の指定を参照)と
split
関数の三番目の引数として正規表現を許す
(セクション Built-in Functions for String Manipulationを参照)。
awk
を
`¥b'、`¥f'、`¥r'を認識するように
変更していたが、それはあなたが信頼できるものではない)。
getline
関数に対する入力のリダイレクト
(セクション getline
を使った入力を参照).
BEGIN
ルールとEND
ルール
(セクション 特殊パターンBEGIN
とEND
を参照).
UNIX System V Release 4 versionのawk
では次のような機能が追加されて
いる(このうちの幾つかはgawk
がオリジナルである)
ENVIRON
変数 (セクション 組み込み変数を参照)。
srand
が返す値の定義
(セクション Numeric Built-in Functionsを参照)。
toupper
と tolower
(セクション Built-in Functions for String Manipulationを参照).
printf
関数の書式指定文字`%c'の仕様の明確化
(セクション 書式制御文字を参照)。
printf
関数の引数リスト中で("%*.*d"
)の様にフィールド幅や、精度
を動的に与える機能
(セクション 書式制御文字を参照).
$0 ‾/foo/
の様に、マッチングオペレータを使用したときと等価な
/foo/
の様な正規表現定数
(セクション 正規表現定数を使うを参照)。
awk
POSIX のコマンド言語およびユーティリティの標準は、awk
に次のような
言語の変更を導入した。
CONVFMT
の使用
(セクション Conversion of Strings and Numbersを参照)。
以下の一般的な拡張はPOSIX標準では許されていない。
¥x
で指定されるエスケープシーケンスを認識しない。
(セクション エスケープシーケンスを参照).
FS
is
equal to a single space.
function
の略語として func
を認めない
(セクション Function Definition Syntaxを参照)。
FS
の
値をタブにセットしない
(セクション フィールドの分割方法の指定を参照)。
fflush
をサポートしない
(セクション Built-in Functions for Input/Outputを参照)。
awk
オリジナルのawk
の開発者の一人であるBrian Kernighanは、
彼の作成した処理系を匿名ftp
を通じて入手可能な
状態に置いている
(セクション 自由に入手可能な他のawk
処理系を参照)。
このセクションでは、彼の作成したawk
処理系のPOSIX awk
にはない
拡張機能を説明する。
fflush
(セクション Built-in Functions for Input/Outputを参照)。
awk
にはないgawk
の拡張
GNU の実装による gawk
には、多くの機能が追加されている。
このセクションでは、そのような機能をとりあげる。
拡張機能は`--traditional' オプションや
`--posix'オプションによって禁止することができる
(セクション コマンドラインオプションを参照)。
gawk
のバージョン 2.10では以下の機能が導入された。
AWKPATH
環境変数。
(セクション コマンドラインオプションを参照).
IGNORECSE
変数とその効果。
(セクション 大小文字を区別するマッチングを参照).
gawk
を参照)。
gawk
バージョン2.13では以下の機能が導入された。
FIELDWIDTHS
変数とその効果
(セクション 固定長データの読み込みを参照)・
systime
と strftime
(セクション Functions for Dealing with Time Stampsを参照)。
gawk
バージョン2.14では以下の機能が導入された。
next file
文
(セクション The nextfile
Statementを参照)。
gawk
バージョン2.15では以下の機能が導入された。
FILENAME
がARGV
のどこにあるかを示す
ARGIND
という変数 (セクション 組み込み変数を参照)。
getline
が -1を返したり、close
が失敗したときの
システムのエラーメッセージを保持するERRNO
という変数
(セクション 組み込み変数を参照)。
gawk
を参照).
gawk
のバージョン3.0では以下の機能が導入された。
next file
文はnextfile
に変更された
(セクション The nextfile
Statementを参照)。
awk
にない機能を
警告するための`--lint-old'オプション
(セクション Major Changes between V7 and SVR3.1を参照)。
FS
に空文字列がセットされたときの動作と、
split
の第三引数に空文字列を渡したときの動作。
(セクション 個々のキャラクタを別個のフィールドにするを参照).
RS
が正規表現のときの動作。
(セクション 入力をレコードへと分割をするやりかたを参照).
RT
変数
(セクション 入力をレコードへと分割をするやりかたを参照).
gensub
関数
(セクション Built-in Functions for String Manipulationを参照)。
strftime
関数が引数なしで呼べるようにデフォルトの
時間フォーマットを獲得した
(セクション Functions for Dealing with Time Stampsを参照)。
IGNORECASE
の値が、文字列比較だけでなく、正規表現演算にも
適用されるようになった
(セクション 大小文字を区別するマッチングを参照).
awk
にあった
`-m'オプションとfflush
関数
(セクション コマンドラインオプションを参照と
セクション Built-in Functions for Input/Outputを参照)。
gawk
for Unixを参照).
gawk
のインストールを参照)。