ストップウォッチ
コマンドラインでストップウォッチ - みずぴー日記 にインスパイヤされて、awk でもストップウォッチを作ってみます。 このページにあるストップウォッチが 1 (msec) までを表示していますので、xgawk の time プラグマを使って 1 (msec) の分解能でストップウォッチを表示させます。
time プラグマの使い方は AWK Users JP :: ベンチマークのための時間計測関数 でも使っていますが、単に load してやれば良いです。
#! /usr/local/bin/xgawk -f
# stopwatch.awk
# ストップウォッチ
# usage: xgawk -f stopwatch.awk
@load time
BEGIN {
start_time = gettimeofday();
while (1) {
printf("%s\r", split_time(gettimeofday() - start_time));
}
}
function split_time(num) {
milisec = int((num - int(num)) * 1000);
sec = num % 60;
min = (num / 60) % 60;
hour = (num / 3600) % 24;
return sprintf("%02d:%02d:%02d.%03d\r", hour, min, sec, milisec);
}
こちらも、CTRL-c で終了、CTRL-z で一時停止になります。
$ xgawk -f stopwatch.awk 00:00:05.853
使いどころに悩ましい gettimeofday() 関数ですが、数少ない出番になります。

