notebook

都内でWEB系エンジニアやってます。

grep,awk,nkf,jq,perlでバッファしないようにする

grep,awk,nkf,jq,perlでバッファしないようにする

ログをtailして整形して流す際にどっかで出力をバッファしてしまって本来流れている部分全てが表示されずに困ってしまうことがあったので調べてみました

grep

おなじみgrep

grep --line-buffered hoge

awk

簡単な集計に使ったりしてました

awk '{print $1,$3; fflush()}'
awk '{print $1,$3; system("")}'
  • 参考

awk に標準出力をバッファさせないようにする

blog.cles.jp

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'
  • 参考

Perlでバッファリング抑止 - mikedaの日記

mikeda.hatenablog.com

意外にまとまったページを見つけることができなかったので備忘録がてら残しておきます