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은 일치하는 줄만 인쇄합니다. 귀하의 예에서 파이프는 Dwhite
및 date
및 을 포함하는 줄만 인쇄합니다 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'
그러나 실제로 다른 것을 설치하고 싶지 않은 컴퓨터에 갇히지 않는 한, 다음에 나열된 것과 같이 출력을 색상화하도록 설계된 도구를 사용하는 것이 좋습니다.캐스의 대답또는이 스레드.