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.
したがって、ここでは、 を実行する&!nat
Enterか、 を実行して、たとえば内での&Ctrl+R192.168.1.1
Enter一致を回避します。192.168.1.1
192.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