ナウ でヤング な現代人 は時間にうるさい。
標準出力にタイムスタンプを割り込ませて、いろんなコマンドをナウでヤングにしよう
#環境
OS X 10.11
zsh
Homebrew 0.9.9
大丈夫だと思うけどHomebrewってナンヤネンって方はこちらを
#経緯 (興味ない方はパス )
linuxではstdbufコマンドで標準出力に割り込ませることが出来るらしい。
stdbufコマンドを使用してコマンドの標準出力にタイムスタンプを追加
Macでも出来るのか…?
ping 8.8.8.8 | stdbuf -oL gawk '{print strftime("[%a %b %e %H:%M:%S %Z %Y] "), $0; }'
-----
zsh: command not found: stdbuf
...
どうやら出来ない。stdbufが入ってないそうな。
brew install stdbufでは入らず。
どうやらMacではstdbufそのものは使えないらしい。代替品のgstdbufが使えるそうな。
[macで使いにくいコマンドをLinuxに合わせる]
(http://qiita.com/toyama0919/items/661437d86a95b02484a2)
と、言うわけで
やってみよう。
方法
## 準備
brew install coreutils
brew install gnu-sed
brew install gawk
gstdbufが使えるようになった。
サンプル
ping 8.8.8.8 | gstdbuf -oL gawk '{print strftime("[%a %b %e %H:%M:%S %Z %Y] "), $0; }'
月 6 20 02:18:16 JST 2016] PING 8.8.8.8 (8.8.8.8): 56 data bytes
[月 6 20 02:18:16 JST 2016] 64 bytes from 8.8.8.8: icmp_seq=0 ttl=52 time=5.284 ms
[月 6 20 02:18:17 JST 2016] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=52 time=4.061 ms
[月 6 20 02:18:18 JST 2016] 64 bytes from 8.8.8.8: icmp_seq=2 ttl=52 time=4.153 ms
strftimeはCのそれと大体一緒らしい。
Man page of STRFTIMEを参考にして
[%a %b %e %H:%M:%S %Z %Y]
の中を適当にいじれば表示させる項目を変える事ができる。
やったぜ
追記
gawk単体でも同じことが出来るそうです。(KazBondさんありがとうございます)
ping 8.8.8.8 | gawk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0 }{fflush()}'
gawkもデフォルトで入ってるかどうか失念してしまったので、出来なかったら
brew install gawk
しましょう。
#参考
stdbufコマンドを使用してコマンドの標準出力にタイムスタンプを追加
[macで使いにくいコマンドをLinuxに合わせる]
(http://qiita.com/toyama0919/items/661437d86a95b02484a2)
Man page of STRFTIME