두 개의 연속 grep
명령을 사용하는 경우 예 :
echo "foo bar" | grep foo | grep bar
그런 다음 첫 번째 패턴 ( “foo”)이 강조 표시되지 않습니다. 실제로 grep은 입력에서 색상 코드를 제거하는 것으로 보입니다. 이것을 막을 방법이 있습니까?
답변
사용하십시오 --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
, 2013
하고 foo
.
grep --color=always ID file | grep 2013 | grep foo
색상 것 ID
하고 foo
있지만 2013
.
1 중요 : 또한색상에서 추가 된 혼란 이 체인의 다음 명령으로 전달됨을기억해야합니다. ID에 색상이 지정되면 (쉽게) 일치 할 수 없습니다 (예 🙂ID=111
.
경우에 따라 파일에서 터미널 색상 을 원할 수도 있습니다 . 예를 들어보십시오
grep --color=always foo file > result
cat result
결과 파일은 이식성이 매우 제한적입니다.
착색 자체도 확장입니다.
good @slm 에서 언급했듯이 다음을 추가 할 수 있습니다.
export GREP_OPTIONS="--color=always"
당신에 .bashrc
등, 하지만하지 않습니다 당신이하지 않는 몇 가지 이유가 정말로 의미를 이해하고 아직도하고 싶은 위해. 그것은 grep
위에서 언급 한 사실 때문에 여러 가지면에서 깨질 것입니다 1 .
alias
자주 사용 하는 경우 추가하십시오 .
alias cgrep='grep --color=always'
GREP_OPTIONS
그리고 --color
세 가지 옵션을 : never
, auto
및 always
. 두 개의 첫 번째 만이 고려되어야합니다 GREP_OPTIONS
.
또한 체크 아웃 할 수 GREP_COLORS
에서 man
페이지 또는에서 의 GNU 그렙 .