Как указать несколько условий фильтрации, связанных с помощью AND в less?
Я хотел бы отфильтровать журнал, строки которого НЕ содержат «nat», но содержат IP-адрес 192.168.1.1, например:
&/!нац && 192.168.1.1
Однако это не работает, результат пустой...
Пожалуйста, порекомендуйте.
решение1
Начиная с версии v569,меньшеможет «накладывать» фильтры друг на друга, чтобы «углубиться» в файл журнала.
Из страницы руководства:
&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
Enterthen &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 -n -e '/nat/ d' -e '/192\.168\.1\.1/ p' FILE | less