menos: múltiplas condições de filtro com AND

menos: múltiplas condições de filtro com AND

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: &!natEnterthen &Ctrl+R192.168.1.1Enterou para evitar correspondência 192.168.1.1interna, 192.168.1.123por exemplo &Ctrl+R\<192\.168\.1\.1\>Enter.

Responder2

estou convencidomenosnão permite exibir apenas linhas com 192.168.1.1mas 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

informação relacionada