awk で複数のプログラムを実行2006年11月29日 10時42分21秒

awk には -f オプションを利用して、awk プログラムを与えることが出来る。それ以外にも、コマンドラインに直接書き込むことも可能だ。

gawk には複数の -f を指定する事が可能だ。その場合は、与えられた順に -f のファイルを読み込む。このことは man に明示されている。

例えば、二つのファイルがあるとする。


% head 1 2
==> 1 <==
BEGIN{print "1"}

==> 2 <==
BEGIN{print "2"}

実行結果はこのようになる。


% gawk -f 1 -f 2
1
2
% gawk -f 2 -f 1
2
1

awk -f 1 -f 2 の場合は cat 1 2 の結果を実行しているのと同じ要領だ。

awk には 古典 awk と nawk があり、FreeBSD や Linux などの PC UNIX には awk は awk でも、拡張版である事が多い。Linux の awk は gawk だった。Solaris には相変わらず、awk の古典版がある。

FreeBSD 6.1 の awk も nawk も複数の -f オプションに付いての記述はない。そこで、実験してみた。


% nawk -f 2 -f 1
2
1
% awk -f 2 -f 1
2
1

どちらでも、複数の -f を指定できる様だ。この様子だと、FreeBSD の awk は nawk のようだ。後で、Solaris でも実験したいと思う。

次回