menos: múltiples condiciones de filtro con AND

menos: múltiples condiciones de filtro con AND

¿Cómo especificar múltiples condiciones de filtro conectadas con AND en menos?

Me gustaría filtrar un registro que tenga líneas que NO contengan "nat" pero que contengan una dirección IP 192.168.1.1, como:

&/!nat && 192.168.1.1

Sin embargo no funciona, el resultado está vacío...

Por favor avise.

Respuesta1

Desde la versión v569,menospuede "apilar" filtros para "profundizar" en un archivo de registro.

Desde la 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.

Así que aquí harías: &!natEnterthen &Ctrl+R192.168.1.1Enter, o para evitar coincidencias 192.168.1.1internas 192.168.1.123, por ejemplo &Ctrl+R\<192\.168\.1\.1\>Enter.

Respuesta2

Estoy convencidomenosno permita mostrar solo líneas con 192.168.1.1pero sin nat.

  • Puedes usar |(o)
  • ||, &y &&no existen
  • Sólo puedes invertir la coincidencia para toda la expresión (con !al principio), pero !no es especial después

Una alternativa es utilizarsedantesmenos.

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

información relacionada