less: AND による複数のフィルター条件

less: AND による複数のフィルター条件

less で AND で接続された複数のフィルター条件を指定するにはどうすればよいですか?

次のように、「nat」を含まないが IP アドレス 192.168.1.1 を含む行を持つログをフィルタリングしたいと思います。

&/!nat && 192.168.1.1

しかし、それは機能せず、結果は空です...

お知らせ下さい。

答え1

バージョンv569以降、少ないログ ファイルを「ドリルダウン」するためにフィルターを「スタック」できます。

man ページから:

&pattern
              Display  only  lines which match the pattern; lines which do not
              match the pattern are not displayed.  If pattern  is  empty  (if
              you  type  &  immediately  followed  by ENTER), any filtering is
              turned off, and all lines are displayed.  While filtering is  in
              effect,  an  ampersand  is  displayed  at  the  beginning of the
              prompt, as a reminder that some lines in the file may be hidden.
              Multiple  &  commands  may  be entered, in which case only lines
              which match all of the patterns will be displayed.

              Certain characters are special as in the / command:

              ^N or !
                     Display only lines which do NOT match the pattern.

              ^R     Don't interpret regular expression  metacharacters;  that
                     is, do a simple textual comparison.

したがって、ここでは、 を実行する&!natEnterか、 を実行して、たとえば内での&Ctrl+R192.168.1.1Enter一致を回避します。192.168.1.1192.168.1.123&Ctrl+R\<192\.168\.1\.1\>Enter

答え2

私は確信しています少ない192.168.1.1を含む行のみを表示することはできませんnat

  • |(または)
  • ||、存在し&ない&&
  • 反転一致は式全体(!先頭に)に対してのみ可能であり、それ!以降は特殊ではありません。

代替案としては、sed前に少ない

sed -n -e '/nat/ d' -e '/192\.168\.1\.1/ p' FILE | less

関連情報