wc -w by awk ― 2011年05月02日 20時55分12秒
awk の処理の基本は、入力行を一行ずつ処理すること。一行読まれる毎に、一行の中のトークンの数が NF に保持される。これを全部足せば、ファイルの単語数になる。
% wc -w /etc/services
9487 /etc/services
% awk '{w+=NF}END{print w}' /etc/services
9487
awk の変数は他の多数のスクリプト言語と同様に型宣言が無い。awk が扱う型は、数字型と文字列型のみの二種類になる。文字列か、数字かは式によって決定される。変数の初期値は空文字か 0 になっている。スコープは関数の引数以外は全て広域変数になる。その為、大型の awk スクリプトだと変数名が衝突してしまう事も起きやすい。
上では、変数 w
に書く行の単語数を +=
で随時数字として足していく。そして、全ての行の処理が終わったら、値を出力する。
今回の要点。
- NF
- awk 変数
最近のコメント