@kyanny's blog

My thoughts, my life. Views/opinions are my own.

logfmt 形式のログを key=value ごとに改行して表示する

sed -E 's/(\S+=)/\n\1/g'

要 GNU sed。BSD の sed は \n で改行を入力できないため。bash - Insert newline (\n) using sed - Stack Overflow

$ cat log.txt
2010-09-16T15:13:46.723498+00:00 heroku[router]: at=info method=GET path="/posts" host=myapp.herokuapp.com" fwd="204.204.204.204" dyno=web.1 connect=1ms service=18ms status=200 bytes=975

$ cat log.txt | sed -E 's/(\S+=)/\n\1/g'
2010-09-16T15:13:46.723498+00:00 heroku[router]:
at=info
method=GET
path="/posts"
host=myapp.herokuapp.com"
fwd="204.204.204.204"
dyno=web.1
connect=1ms
service=18ms
status=200
bytes=975

logfmt 形式のログのキーを一覧する - @kyanny's blog の亜種。キーだけではどんな感じの値を持つのかピンとこない場合に。一行ずつになってると見やすい。