grep’ing 후 ls 착색 유지에 비슷한 질문이 있지만 착색 grep 출력을 다른 grep에 파이프하면 착색이 유지되지 않는다는 것이 나에게 성가신 일입니다.
예를 들어 grep --color WORD * | grep -v AVOID
첫 번째 출력의 색상을 유지하지 않습니다. 그러나 나를 ls | grep FILE
위해 색을 유지하는 이유는 무엇입니까?
답변
grep
예를 들어 파이프에 쓸 때 색상 출력이 비활성화됩니다. 이 동작을 재정의 할 수 있습니다grep --color=always
올바른 명령 줄은
grep --color=always WORD * | grep -v AVOID
이것은 매우 장황합니다. 대신 선을 추가 할 수 있습니다
alias cgrep="grep --color=always"
당신에 대한 .bashrc
예와 사용 cgrep
의 색칠 GREP있다. 재정의 grep
할 때 특정 출력에 의존하고 grep
ASCII 이스케이프 코드를 좋아하지 않는 스크립트에 문제가 발생할 수 있습니다 .
답변
충고 한마디 :
를 사용할 때 grep --color=always
다음 파이프로 전달되는 실제 문자열이 변경됩니다. 다음과 같은 상황이 발생할 수 있습니다.
$ grep --color=always -e '1' * | grep -ve '12'
11
12
13
옵션이 비록 -ve '12'
중간 선을 제외해야합니다, 그것은 사이에 컬러 문자가 없기 때문에 1
하고 2
.
답변
파이프 끝에서 동일한 grep 명령을 반복하면됩니다.
grep WORD * | grep -v AVOID | grep -v AVOID2 | grep WORD