검색을 기반으로 주문형 꼬리를 달고 결과를 색상화하는 방법

검색을 기반으로 주문형 꼬리를 달고 결과를 색상화하는 방법

안녕하세요. 많은 정보가 포함된 로그 파일이 있는데 내가 찾고 있는 내용을 찾기가 꽤 어렵기 때문에 로그에서 보고 싶은 내용만 표시하는 이 명령을 실행했습니다. 이 명령은 리스너 역할을 합니다. 패턴이 일치하면 검색 결과만 표시됩니다.

tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"stringOneExample\""

그리고 잘 작동합니다. 문제는 다른 grep을 파이프하면 발생합니다.

tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"jsonKeyOne\"" | GREP_COLOR='01;31' egrep --color=always "\"jsonKeyTwo\""

첫 번째 결과에 두 번째 조건이 포함되어 있지 않기 때문에 하나를 다른 것으로 파이프할 때 아무것도 표시되지 않기 때문에 작동하지 않는다고 생각합니다. 그래서 두 가지(또는 그 이상) grep이 모든 파일에 대해 작동하고 그냥 제공하고 싶습니다. 차이점을 더 쉽게 발견하기 위해 각 문자열에 다른 색상을 지정했습니다.

참고 :|$를 끝에 추가하면 일반 꼬리처럼 작동하여 내가 원하는 것이 아닌 많은 추가 정보가 표시됩니다.

 tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"stringOneExample\":|$"

답변1

다음을 사용하는 것이 좋습니다:

grep -e 'jsonKeyOne' -e 'jsonKeyTwo'

...또는 귀하의 조건에 따라. grep의 취향에 따라 -E 'jsonKeyOne|jsonKeyTwo' 도 가능합니다. 용어만으로 가장 빠른 옵션입니다.

다양한 색상은 다음과 같이 작동합니다. 첫 번째 항만 색상이 지정되고 다른 모든 선은 색상이 지정되지 않고, 다음 항은 다른 색상과 다른 모든 선으로 표시됩니다. 마지막 항까지 해당 색상과 다른 모든 선도 표시됩니다.

grep이나 구문 강조 중 하나, 둘 다 사용하지 않는 것이 좋습니다.

관련 정보