less: AND를 사용한 여러 필터 조건

less: AND를 사용한 여러 필터 조건

AND로 연결된 여러 필터 조건을 Less로 지정하는 방법은 무엇입니까?

다음과 같이 행에 "nat"가 포함되지 않지만 IP 주소 192.168.1.1이 포함된 로그를 필터링하고 싶습니다.

&/!nat && 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.

&!natEnter따라서 여기서는 then , 또는 예를 들어 내부 &Ctrl+R192.168.1.1Enter일치를 피하기 위해 수행합니다 .192.168.1.1192.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

관련 정보