답변:
이 grep
명령은 --color=always
옵션을 허용 하므로 사용할 수 있습니다
grep 'keyword1' file.log --color=always | grep 'keyword2'
gertvdijk가 지적한 것처럼 이 명령은 비효율적 일 수 있지만 keyword1과 keyword2를 모두 포함하는 모든 행을 찾습니다. 다른 색상으로 강조 표시하려면
grep 'keyword1' file.log --color=always | GREP_COLORS="mt=01;34" grep --color=always 'keyword2'
키워드 2가 파란색으로 강조 표시됩니다. 이 mt
부분은 grep
이 CSI 코드를 사용하여 일치하는 텍스트를 강조 표시 하고 01;34
"일반 배경에서 굵은 파란색 전경"을 의미합니다.
grep -R --color=always keyword1 . | grep keyword2
작동한다. 출력을 다시 리디렉션합니까 (예 : 두 번째 grep
로 파이프 로 연결 less -R
)? 그렇다면 --color=always
두 번째에도 추가해야합니다 .
--color=auto
초가 필요합니다 . grep
'keyword2'
--color=always
당신이 그것을 less
또는 다른 것으로 파이프하고 싶을 수도 있기 때문에 대답에 추가 했습니다 .
다음 grep
과 같은 다른 인스턴스로 파이프하는 대신 실제 정규 표현식을 사용해보십시오 .
grep -E "\<foo\>.*\<bar\>" file
불행히도 키워드가이 순서로만 일치하는 일치하는 줄로 제한됩니다. 어쨌든, grep
귀하의 질문에 사용하는 것은 다소 비효율적이므로 피해야합니다. @DanielH 의 대답은 아마도 당신의 경우에 훨씬 더 간단합니다.
키워드와 '또는'일치하는 키워드를 정기적으로 사용합니다.
grep -E "(foo|bar)" file
foo.*bar|bar.*foo
있는지 또는이 경우 (키워드의 표준 순서를 가진 로그 파일로 보이는 경우)에도 필요한지 모르겠습니다 . 나는 당신을 업데이트하기 전에 내 대답을 추가했지만 체인이 grep
실제로 필요한 상황이 있거나 (또는 다른 시간에 컬러 출력을 터미널에 보내서는 안되는 경우) 계속 사용하겠습니다 grep | less -R
.