유지된 색상 코드를 입력하기 위해 grep을 어떻게 사용합니까?

유지된 색상 코드를 입력하기 위해 grep을 어떻게 사용합니까?

다음과 같은 두 개의 연속 명령을 사용하는 경우 grep:

echo "foo bar" | grep foo | grep bar

그러면 첫 번째 패턴("foo")이 강조 표시되지 않습니다. 실제로 grep은 입력에서 색상 코드를 제거하는 것 같습니다. 이런 일이 발생하지 않도록 하는 방법이 있나요?

답변1

사용 --color=always.

grep출력이 파이프(또는 파일)로 가는지 여부를 감지합니다. 파일로 출력할 때 마지막으로 필요한 것은 색상입니다. 색상은 터미널의 이스케이프 시퀀스이기 때문입니다. 대개:

foo ^[[01;31m^[[Kbar^[[m^[[K

예를 들어:

grep pattern file > result

재정의하려면 --color=always.

grep --color=always pattern file | ...

예:

파일이 있습니다:

ID=111;Year=2013;foo=bar
ID=222;Year=2013;foo=baz

그 다음에

grep --color=always ID file | grep --color=always 2013 | grep foo

색상 을 알고 ID, .2013foo

grep --color=always ID file | grep 2013 | grep foo

ID및 에는 색조가 적용되지만 foo에는 적용되지 않습니다 2013.

중요사항 1개 :추가하는 것도 기억해야 합니다.지저분한색상에서 체인의 다음 명령으로 전달됩니다. ID에 색상이 지정되면 (쉽게) 일치할 수 없습니다 ID=111.


어떤 경우에는 터미널 색상을 원할 수도 있습니다.파일에. 예를 들어 시도해보십시오.

 grep --color=always foo file > result
 cat result

결과 파일은 이식성이 매우 제한되어 있습니다.


색칠하는 것 자체도 무리입니다.


좋은 사람들 말대로@slm, 다음을 추가할 수 있습니다.

export GREP_OPTIONS="--color=always"

당신을 .bashrc기다려요하지만 하지마어떤 이유로든 그 의미를 정말로 이해하고 여전히 그렇게 하고 싶어하지 않는 한. 위의 사실 1grep 로 인해 여러 가지 방법으로 문제가 발생할 수 있습니다 .

alias정기적으로 사용하는 경우 하나를 추가하십시오.

 alias cgrep='grep --color=always'

GREP_OPTIONS그리고--color 세 가지 옵션을 선택하세요: never, auto그리고 always. 처음 두 개만 고려되어야 합니다 GREP_OPTIONS.

GREP_COLORSman페이지나 아래에서도 보실 수 있습니다그누 그렙.

관련 정보