다음과 같은 결과를 출력하는 프로그램이 있습니다 stdout
.
[OK] Something is ok
[OK] Something else is also ok
[FAIL] This does not look good
[FAIL] Neither does this
[OK] At least this is fine
FAIL
출력에서 오류를 더 쉽게 찾을 수 있도록 키워드 발생을 빨간색으로 표시하고 싶습니다.아니요다른 메시지는 삭제하세요. 키워드도 녹색으로 강조하면 좋을 것 같아요 OK
:)
파이프를 사용하면 키워드가 있는 행만 표시됩니다 egrep --color FAIL
.FAIL
답변1
manatwork
다른 질문에 있는 놀라운 작은 "또는 아무것도" 해킹을 기반으로 나는 이것을 제공합니다.둘하이라이트 색상:
$ myprogram | \
GREP_COLORS='mt=01;32' egrep --color=always '\[OK\]|' | \
GREP_COLORS='mt=01;31' egrep --color=always '\[FAIL\]|'
즉, 매번 다른 환경 변수를 사용하여 grep
출력을 두 번 실행합니다 .GREP_COLORS
'01;32' 값은 "굵은 녹색"을 의미하고 다른 값은 "굵은 빨간색"을 의미합니다. 위키피디아 보기ANSI 코드에 관한 기사더 많은 아이디어를 얻기 위해.
아쉽게도 이를 위해서는 GNU grep 버전 2.5.3 이상이 필요합니다. 이전 버전의 GNU grep은 다양한 색상 지정 메커니즘을 지원했지만 이러한 버전에는 파이프라인에서 해당 기능을 여러 번 사용할 수 없게 하는 버그가 있었습니다. BSD grep은 파이프라인에서 두 번 작동하는 이전 GNU grep 셰이딩 메커니즘을 에뮬레이트하지만 해킹으로 인해 "empty subexpression"이라고 외칠 것입니다 manatwork
.
처음 두 줄의 끝에서 백슬래시를 제거하여 한 줄로 만들 수 있습니다. 명확성을 높이고 SE 페이지 형식과 잘 작동하도록 여기에서 분할하고 있습니다.
답변2
multitail 또는 ccze를 사용하여 이 작업을 수행할 수 있습니다. 두 가지 모두 일치 및 색상 지정을 위한 정규식을 설명하는 구성을 허용합니다.
답변3
Warren Young의 답변을 바탕으로 다음과 같이 썼습니다.이 Python 스크립트이는 동일한 작업을 더 우아하게 수행하고 타이핑이 덜 필요합니다. 스크립트를 사용하는 방법은 다음과 같습니다.
cat yourfile | himul '\[OK\]' '\[FAIL\]'