[linux] grep은 여러 문자열을 제외합니다.

tail을 사용하여 로그 파일을 보려고하는데 -f다음 문자열을 포함하는 모든 줄을 제외하고 싶습니다.

"Nopaging the limit is"`  and `"keyword to remove is"

다음과 같이 하나의 문자열을 제외 할 수 있습니다.

tail -f admin.log|grep -v "Nopaging the limit is"

하지만 어떻게 내가 중 하나 포함하는 라인을 제외 할 string1이상을 string2.



답변

grep을 사용하여 여러 줄을 필터링하는 두 가지 예 :

이것을 넣으십시오 filename.txt:

abc
def
ghi
jkl

문자열의 토큰 사이에 파이프가있는 -E 옵션을 사용하는 grep 명령 :

grep -Ev 'def|jkl' filename.txt

인쇄물:

abc
ghi

괄호로 둘러싸인 토큰 사이에 파이프가있는 -v 옵션을 사용하는 명령 :

egrep -v '(def|jkl)' filename.txt

인쇄물:

abc
ghi


답변

grep -Fv -e 'Nopaging the limit is' -e 'keyword to remove is'

-F 정규식 대신 리터럴 문자열로 일치

-v 일치를 반전

-e 여러 검색 패턴 허용 (모두 리터럴 및 반전)


답변

또 다른 옵션은 제외 목록을 만드는 것입니다. 이는 제외 할 항목의 목록이 길 때 특히 유용합니다.

vi /root/scripts/exclude_list.txt

이제 제외하려는 항목을 추가하십시오.

Nopaging the limit is
keyword to remove is

이제 grep을 사용하여 파일 로그 파일에서 줄을 제거하고 제외되지 않은 정보를 봅니다.

grep -v -f /root/scripts/exclude_list.txt /var/log/admin.log


답변

egrep -v "Nopaging the limit is|keyword to remove is"


답변

tail -f admin.log|grep -v -E '(Nopaging the limit is|keyword to remove is)'


답변

다음과 같이 일반 grep을 사용할 수 있습니다.

tail -f admin.log | grep -v "Nopaging the limit is\|keyword to remove is"


답변

그립은 연결될 수 있습니다. 예를 들면 :

tail -f admin.log | grep -v "Nopaging the limit is" | grep -v "keyword to remove is"