「grep」を使用するときに「tail」出力にキャリッジリターンを追加する

「grep」を使用するときに「tail」出力にキャリッジリターンを追加する

次のコマンドをリファクタリングしようとしています。

tail -f production.log |
    grep -e "Processing " -e "compatible;" -e "Completed in " -e

以下はコマンドの出力です。

BasketController#cross_sell_product 処理 (2011-08-03 12:46:07 の 85.189.237.x) [POST] "RequestLog", "2011-08-03 12:46:07", "12595", " www. website .com","/basket/cross_sell_product/113","85.189.237.x","Mozilla/5.0 (互換可能; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" 0.07853で完了(要求1犬/第2)|レンダー:0.01402(17%)| DB:0.01439(18%)| 200 OK [https://www.website.com/basket/cross_sell_product/113]

これは素晴らしく正確に私が望むものですが、ログを塊として研究できるように、後で1〜2回のリターンを見たいと思います。

\n最後に追加しようとしましたが、うまくいきませんでした。

ベストアンサー1

あなたが望むものは何であるかよくわかりませんが、awkはおそらく簡単にできるでしょう。一致する各行の後に改行を追加するには:

tail -f production.log |
awk '/Processing|compatible;|Completed in / {print; print ""}'

一致する行の連続していないすべてのブロック間に改行を追加するには:

tail -f production.log |
awk '
/Processing|compatible;|Completed in / {
    if (NR == n+1) print "";
    n = NR;
    print;
}'

おすすめ記事