필터 grep의 컬러 출력

필터 grep의 컬러 출력

저는 OSX를 사용하고 있지만 이것이 문제에 큰 영향을 미치지 않는 것으로 생각됩니다. 내에서는 .bash_profile기본적으로 별칭을 사용하여 grep색상 출력을 얻습니다.

alias grep='grep --color=always'

나는 일반적으로 다음과 유사한 방식으로 저장소에 있는 파일의 콘텐츠를 검색합니다.

grep --include=*.cpp -Ern . -e "(foo|bar)"

그러나 나는 종종 say for piping 을 사용하여 결과를 더욱 구체화하고 싶습니다 grep -v "colorbar".

문제는 두 번째 grep명령이 컬러 출력에서 ​​실행되므로 제외 패턴과 일치하지 않는 것 같습니다.

분명히 색상 없이 첫 번째 검색을 실행할 수 있으며 모든 것이 잘 작동할 것입니다. 하지만 이 문제를 해결할 수 있는 방법이 있다면 색상을 유지하는 것이 좋을까요?

답변1

간단하고 분명한 대답은 다음과 같습니다.

  1. 별칭을 has로 변경하세요 --color=auto.always
  2. 원하는 대로 grep 명령을 파이프하세요.
  3. 파이프라인 끝에 추가 grep 명령을 사용하여 원하는 결과 색상을 지정합니다. 예를 들면 다음과 같습니다.

    grep --include=*.cpp -Ern . -e "(foo|bar)" | grep -v colorbar | grep -E -e "(foo|bar)"
    

그러나 이렇게 하면 파일 이름과 파일 번호의 색상이 잘 지정되지 않습니다.

또 다른 가능한 해결책은 훨씬 더 까다롭지만 여전히 언급할 가치가 있습니다. pcregrep더 멋진 정규식을 사용하여 하나의 정규식에서 모든 필터링을 처리할 수 있습니다.

답변2

/etc/profile.d/colorgrep* 파일 삭제 최신 버전의 os linux에서는 greg/egrep 및 fgreg에 대한 별칭을 강제로 적용하고 파일을 삭제하면 정상으로 돌아갑니다.

관련 정보