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

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

Sponsored Links

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

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

20160601_084730000000

[root@BS-PUB-CENT7-01 ~]# ping 8.8.8.8 | awk '{print strftime("%F %T ") 
[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-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 ") 
コマンド | awk '{print strftime("%F %T ") $0}{fflush() }' > リダイレクト先PATH
}{fflush() }' > リダイレクト先PATH
[root@BS-PUB-CENT7-01 ~]# ping -c 10 8.8.8.8 | awk '{print strftime("%F %T ") 
[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
}{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

 


Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

This article has 1 comments

  1. Pingback: コマンドの並列化を行える『GNU parallel』の個人的使い方まとめ | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

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

*