経緯
logから特定の文字列を取り出して、起こった事象の詳細が知りたい。
sedよくわからん。Perlでいいや。
結論
cat error.log | perl -anle 'if(s/<なんかマッチパターン>/<なんか置換文字列>/){print}'
みそは n
オプションと if(s///){print}
結論に至るまで
最初特に考えなしに単純に s///
だけ書いて、print書かなくても出力されるように p
オプションをつけて実行した。
cat error.log | perl -aple 's/<なんかマッチパターン>/<なんか置換文字列>/'
そのときは後ろにさらに jq
くっつけて整形していたんだけども、json形式じゃないってエラーがでていた。
どうやら p
のおかけでマッチしてない部分についても、 $_
が出力されてしまっていたようだった。
ということで結論に至った。
参考
ワンライナーperlについてはこちらの記事が簡潔。
https://qiita.com/ngyuki/items/d5dde70cf2de952cfb87
詳しくオプション知りたければ perldoc perlrun