grep,awk,nkf,jq,perlでバッファしないようにする
ログをtailして整形して流す際にどっかで出力をバッファしてしまって本来流れている部分全てが表示されずに困ってしまうことがあったので調べてみました
grep
おなじみgrep
grep --line-buffered hoge
awk
簡単な集計に使ったりしてました
awk '{print $1,$3; fflush()}' awk '{print $1,$3; system("")}'
- 参考
nkf
よくURLエンコードされた文字列をデコードするときとかに使ったりします
-uオプションでバッファしない
tail -f /var/log/app/app.log | nkf -u --url-input
jq
jqでもバッファするんですね
jq --unbuffered
perl
以前perlを使っていたので正規表現などなじみがあるので使いやすかったり
ユニコードでエスケープされた文字とかを日本語に変換して出力したりと色々使える
$|=1
でバッファリングしないように出来ます
perl -Xnpe '$|=1; s/hoge/fuga/g; s/aaa/bbb/g'
- 参考
意外にまとまったページを見つけることができなかったので備忘録がてら残しておきます