grep을 사용하여 매개변수 강조 표시

grep을 사용하여 매개변수 강조 표시

Bash의 하이라이트 기능을 사용하는 데 도움이 필요합니다.

내 목표는 세 가지 매개변수를 파악한 다음 이를 세 가지 다른 색상으로 강조 표시하는 것입니다. 나는 이 작업을 해왔지만 이 작업을 수행하는 방법에 대해 머리를 감쌀 수 없습니다.

나는 노력했다

입력하다:

user@syslog:~$ grep --color=always Dwhite VPNsyslog-2016 | grep --color date | grep --color time

산출:

결과는 강조 표시만 되고 Dwhite시간과 날짜는 어떤 이유로 강조 표시되지 않습니다. 이 모든 것은 빨간색으로 강조 표시됩니다.

나도 시도했다

user@syslog:~$ GREP_COLORS='mt=01;32' grep Dwhite VPNsyslog-2016| GREP_COLORS='mt=01;31' grep date VPNsyslog-2016 | GREP_COLORS='mt=01;34' time VPNsyslog-2016 

산출:

아무것도 없습니다.

문법이 모두 과장된 경우에도 양해해 주시기 바랍니다. 저는 이 분야에 대해 매우 낯선 사람이고 프로그래머도 아닙니다. 저는 단지 시스템 로그를 더 쉽게 볼 수 있도록 노력하는 네트워크 관리자일 뿐입니다.

답변1

grep -E --color=always 'Dwhite|date|time' VPNsyslog-2016

동일한 명령에서 서로 다른 일치 항목에 대한 서로 다른 색상은 지원되지 않습니다. 파이프라인에서 서로 연결하는 것은 grep사실상 AND 연산입니다(따라서 세 가지 패턴 모두와 일치하는 줄만 출력되고 최종 패턴만 강조 표시됩니다).

보다 구성 가능한 로그 파일 강조 표시를 원할 경우 특수 도구를 사용해야 합니다.니시자와,차단하다,아야오,색소침착또는강조하다(다른 것 중에서). 이들 모두는 Linux 배포판용으로 이미 패키지되어 있을 수 있습니다(물론 Debian 및 Ubuntu와 같은 Debian 파생 제품에도 있습니다).

답변2

다음을 시도해 볼 수 있습니다.

user@syslog:~$ cat VPNsyslog-2016 | GREP_COLORS='mt=01;32' grep --color=always 'Dwhite' | GREP_COLORS='mt=01;31' grep --color=always 'date' |  GREP_COLORS='mt=01;34' 'time'

cat아니면 명령을 실행하지 마십시오

user@syslog:~$ GREP_COLORS='mt=01;32' grep --color=always 'Dwhite' VPNsyslog-2016 | GREP_COLORS='mt=01;31' grep --color=always 'date' |  GREP_COLORS='mt=01;34' 'time'

마지막 항목에서는 STDIN이 첫 번째 파일 내용을 가지 므로 각 실행에서 파일을 지정할 grep필요가 없습니다.grep

당신은 --color=always깃발을 놓쳤습니다.

답변3

y 기본값은 --color터미널에 출력할 때 색상만 출력합니다. 출력이 파이프로 들어가면 grep은 출력 색상을 지정하기 위해 추가 이스케이프 시퀀스 grep이 삽입하는 프로그램에 의해 해당 출력이 구문 분석될 것이라고 가정합니다. 파이프로 들어가는 동안에도 출력을 색상화하려면 다음 --color=always으로 전달하십시오.모두그렙 호출.

GREP_COLORS='mt=01;32' grep --color=always Dwhite VPNsyslog-2016 |
GREP_COLORS='mt=01;31' grep --color=always date |
GREP_COLORS='mt=01;34' grep --color=always time

grep은 일치하는 줄만 인쇄합니다. 귀하의 예에서 파이프는 Dwhitedate및 을 포함하는 줄만 인쇄합니다 time. 모든 줄을 인쇄하려면 각 grep 호출에 원하는 내용을 검색하거나 빈 문자열이 포함되어 있으므로 각 줄이 출력에 표시됩니다.

GREP_COLORS='mt=01;32' grep --color=always -e '' -e Dwhite VPNsyslog-2016 |
GREP_COLORS='mt=01;31' grep --color=always -e '' -e date |
GREP_COLORS='mt=01;34' grep --color=always -e '' -e time

또는 정규 표현식을 사용하세요.

GREP_COLORS='mt=01;32' grep --color=always -E '|Dwhite' VPNsyslog-2016 |
GREP_COLORS='mt=01;31' grep --color=always -E '|date' |
GREP_COLORS='mt=01;34' grep --color=always -E '|time'

그러나 실제로 다른 것을 설치하고 싶지 않은 컴퓨터에 갇히지 않는 한, 다음에 나열된 것과 같이 출력을 색상화하도록 설계된 도구를 사용하는 것이 좋습니다.캐스의 대답또는이 스레드.

관련 정보