Como especificar múltiplas condições de filtro conectadas com AND em menos?
Gostaria de filtrar um log com linhas que NÃO contenham "nat", mas contenham um endereço IP 192.168.1.1, como:
&/!nat && 192.168.1.1
Porém não funciona, o resultado fica vazio...
Por favor, avise.
Responder1
Desde a versão v569,menospode "empilhar" filtros para "detalhar" um arquivo de log.
Na página de manual:
&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.
Então aqui você faria: &!nat
Enterthen &Ctrl+R192.168.1.1
Enterou para evitar correspondência 192.168.1.1
interna, 192.168.1.123
por exemplo &Ctrl+R\<192\.168\.1\.1\>
Enter.
Responder2
estou convencidomenosnão permite exibir apenas linhas com 192.168.1.1
mas sem nat
.
- Você pode usar
|
(ou) ||
,&
e&&
não existem- Você só pode inverter a correspondência para toda a expressão (com
!
no início), mas!
não é especial depois
Uma alternativa é usarsedantesmenos.
sed -n -e '/nat/ d' -e '/192\.168\.1\.1/ p' FILE | less