検索に基づいてオンデマンドでテールし、結果を色分けする方法

検索に基づいてオンデマンドでテールし、結果を色分けする方法

こんにちは。ログファイルにはたくさんの情報があり、探しているものを見つけるのはかなり難しいので、ログに表示したいものだけを表示するこのコマンドを見つけました。パターンが一致するとリスナーとして機能し、検索結果のみを表示します。

tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"stringOneExample\""

問題なく動作しますが、問題は別のgrepをパイプすると

tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"jsonKeyOne\"" | GREP_COLOR='01;31' egrep --color=always "\"jsonKeyTwo\""

最初の結果に2番目の条件が含まれていないため、一方を他方にパイプすると何も表示されないため、機能しないと思います。そのため、すべてのファイルに対して両方(またはそれ以上)のgrep操作を実行し、各文字列に異なる色を付けて、違いをより簡単に見つけられるようにしたいと思います。

注: 末尾に :|$ を追加すると、通常の末尾として機能し、必要な情報ではない多くの追加情報が表示されます。

 tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"stringOneExample\":|$"

答え1

推奨使用法:

grep -e 'jsonKeyOne' -e 'jsonKeyTwo'

…用語を OR します。grep の種類によっては、-E 'jsonKeyOne|jsonKeyTwo' も可能です。これは用語のみを使用する最速のオプションです。

異なる色は次のように機能します。最初の項のみが色付きで、他のすべての線は色なし、次の項は別の色で、他のすべての線も色付き、最後の項はその色で、他のすべての線も色付きになります。

grep または構文の強調表示のいずれか、両方ではない方がよいでしょう。

関連情報