grepは少ないですか?

grepは少ないですか?

現在、いくつかの問題を見つけるために慣れていないログをたくさん見ています。私が見た最初のファイルはEvents.logで、less異なる時間に同じイベントを表示するように見えるページが少なくとも3つ以上ありました。そのイベントはかなり大丈夫だった。このイベントをフィルタリングしたいです。現在終了lessし、次の操作を行います。

grep -v "event text" Events.log | less

これで、フィルタリングしたい他の一般的で興味深いイベントがたくさん表示されます。私ができる方法はありませんか?grep -v ~へless?必ずしなければならないより

egrep -v "event text|something else|the other thing|foo|bar" Events.log | less

私の考えでは、これはすべての種類のログファイルを表示するのに便利な機能です。lessこのツールでなければ、私が探している品質を持つ他のツールはありますか?ただless組み込まれたgrep

ベストアンサー1

less非常に強力なパターンマッチング機能を持っています。 ~からマニュアルページ:

&pattern

    pattern一致する行のみが表示され、一致しない行はpattern 表示されません。空の場合pattern&すぐに入力した場合ENTER)、すべてのフィルタリングがオフになり、すべての行が表示されます。フィルタリングが適用されると、プロンプトの先頭に & 記号が表示され、ファイルの一部の行が非表示になる可能性があることを警告します。

    /コマンドに示すように、特定の文字は特殊文字です。

    ^Nまたは!

      一致しない行のみが表示されますpattern
    ^R
      正規表現のメタ文字を解釈しないでください。つまり、単純リテラル比較を実行します。

    ____________
    特定の文字は、最初に入力するとpattern検索タイプが変わるのではなく、特殊文字ですpattern

   (もちろん、は^Nそれぞれ+と+を^R表します。) CtrlNCtrlR

たとえば、&dnsパターンと一致する行のみが表示されdns&!dnsこれらの行はパターンと一致しない行のみを表示するようにフィルタリング(除外)されます。

/コマンドの説明を参照してください。

    これは、patternシステム提供の正規表現ライブラリで認識される正規表現です。

だから

  • &eth[01]eth0またはを含む行を表示します。eth1
  • &arp.*eth0arp次の内容を含む行が表示されますeth0
  • &arp|dnsarpまたはを含む行を表示します。dns

そして!上記の内容はすべてキャンセルできます。したがって、質問に使用したいコマンドの例は次のとおりです。

&!event text|something else|the other thing|foo|bar

(および/次/前に移動)を使用して検索することもできます。/pattern?patternnN

おすすめ記事