awkで他のコマンドの実行結果に一行ごとにタイムスタンプを付与する
Pocket

個人的によく利用するので、備忘として残しておく。
pingやvmstatなどでコマンドを定期実行した際に、いつ・どのような結果になったのか残しておきたいのに、タイムスタンプを残す機能がコマンドに備わってない場合に有効だ。

Sponsored Links

やり方は簡単で、以下のように対象のコマンドとawkをパイプでつなぐだけだ。

コマンド | awk '{print strftime("%F %T ") $0}'

20160601_084730000000

[root@BS-PUB-CENT7-01 ~]# ping 8.8.8.8 | awk '{print strftime("%F %T ") $0}'
2016-06-01 08:47:02 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
2016-06-01 08:47:02 64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=4.34 ms
2016-06-01 08:47:03 64 bytes from 8.8.8.8: icmp_seq=2 ttl=53 time=4.60 ms
2016-06-01 08:47:04 64 bytes from 8.8.8.8: icmp_seq=3 ttl=53 time=4.67 ms
2016-06-01 08:47:05 64 bytes from 8.8.8.8: icmp_seq=4 ttl=53 time=4.43 ms
2016-06-01 08:47:06 64 bytes from 8.8.8.8: icmp_seq=5 ttl=53 time=4.74 ms
2016-06-01 08:47:07 64 bytes from 8.8.8.8: icmp_seq=6 ttl=53 time=4.54 ms
2016-06-01 08:47:08 64 bytes from 8.8.8.8: icmp_seq=7 ttl=53 time=4.74 ms
2016-06-01 08:47:09 64 bytes from 8.8.8.8: icmp_seq=8 ttl=53 time=4.31 ms
2016-06-01 08:47:10 64 bytes from 8.8.8.8: icmp_seq=9 ttl=53 time=4.24 ms

 

2016/06/08 追記

なお、外部ファイルにリダイレクトで結果を書き出す場合は、awkを以下のように記述してやる必要がある。

コマンド | awk '{print strftime("%F %T ") $0}{fflush() }' > リダイレクト先PATH
[root@BS-PUB-CENT7-01 ~]# ping -c 10 8.8.8.8 | awk '{print strftime("%F %T ") $0}{fflush() }' >
 test.log
[root@BS-PUB-CENT7-01 ~]# cat test.log
2016-06-08 00:00:22 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
2016-06-08 00:00:22 64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=4.82 ms
2016-06-08 00:00:23 64 bytes from 8.8.8.8: icmp_seq=2 ttl=53 time=4.55 ms
2016-06-08 00:00:24 64 bytes from 8.8.8.8: icmp_seq=3 ttl=53 time=4.53 ms
2016-06-08 00:00:25 64 bytes from 8.8.8.8: icmp_seq=4 ttl=53 time=4.64 ms
2016-06-08 00:00:26 64 bytes from 8.8.8.8: icmp_seq=5 ttl=53 time=4.55 ms
2016-06-08 00:00:27 64 bytes from 8.8.8.8: icmp_seq=6 ttl=53 time=4.68 ms
2016-06-08 00:00:28 64 bytes from 8.8.8.8: icmp_seq=7 ttl=53 time=4.59 ms
2016-06-08 00:00:29 64 bytes from 8.8.8.8: icmp_seq=8 ttl=53 time=4.55 ms
2016-06-08 00:00:30 64 bytes from 8.8.8.8: icmp_seq=9 ttl=53 time=4.62 ms
2016-06-08 00:00:31 64 bytes from 8.8.8.8: icmp_seq=10 ttl=53 time=4.64 ms
2016-06-08 00:00:31
2016-06-08 00:00:31 --- 8.8.8.8 ping statistics ---
2016-06-08 00:00:31 10 packets transmitted, 10 received, 0% packet loss, time 9016ms
2016-06-08 00:00:31 rtt min/avg/max/mdev = 4.530/4.619/4.829/0.112 ms

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。