awk 演習: 進行状況を表示2008年12月13日 12時32分12秒

大量のデータを解析したり、思考錯誤する時など同じデータを何度も処理する事がある。また、ネットワークの通信などでファイルやレコードをやりとりする事もある。一回の処理に時間が掛かるようになってくると、処理状況を把握したくなる。あと一分で終るのか、十分掛かるのかで、その間に出来ることも変わる。

大量のデータ解析などで、原本を一度 tar で固める。そして、複製で思考錯誤をし、望んだ出力などが出来るまでスクリプトを編集することがある。こんな時は、tar で何度も展開する事になる。tar xvf と v を指定して、ファイル名を出力してこれを awk を用いて進行状況をおう。

awk で、各行が読まれる度に、現在の行数を出力する。そして、改行の変わりに行頭復帰を用いる。改行を使うと、ターミナルがスクロールして目障りだ。


% tar xvfz data.tgz | awk '{printf("%d\r", NR)}'

他にも、通信系ファイルに出力されているといった状況で大まかな速度を把握したいとでいった状況で観察したい場合に便利だ。

単純だが、頻繁に使う型になっている。