awk 演習: スクリプトファイルを実行2009年02月22日 00時04分41秒

awk も他のスクリプト言語と同様に、ファイルに記述して awk スクリプトが書ける。

% cat echo.awk 
#!/usr/bin/awk -f
{ print "echo", $0 }
% chmod +x echo.awk
% ./echo.awk 
Hello, world!
echo Hello, world!
Hello, awk!
echo Hello, awk!

普段使うために書かれたプログラムは、ほとんどの場合何らかのオプションを取り、それに応じて動作や出力を調整する。しかし、awk はその言語の構文的な構成もあり、スクリプトファイルとして作成する、この様なオプションの処理が容易には出来ない。残念ながら、awk は単体としてスクリプトを成すのには向いていない。

awk を使って処理を行なうスクリプトでも、シェルスクリプトとして記述し、オプションを awk 形式のオプションに変換して処理することが多い。


% cat echo.sh            
#!/bin/sh

if [ $# -gt 0 ]; then
        args="-v prefix=$1"
else
        args=""
fi

awk $args '{print prefix, $0}'
% chmod +x echo.sh
% ./echo.sh
Hello
 Hello
% ./echo.sh awk
Hello
awk Hello

awk へのオプションの渡し方が特有なので、それを隠す為にこの様な方法を使っている。