watch 명령에 의해 컬러 grep 출력이 여러 조각으로 분할됨

watch 명령에 의해 컬러 grep 출력이 여러 조각으로 분할됨

watch파일을 실행하고 내용을 변경할 때 grep 명령의 출력이 표시되도록 실행하려고 합니다 .

일반적인 접근 방식은 잘 작동하지만 색상이 부족합니다.

watch grep 'something' **/*

...저는 색상을 정말 원했기 때문에 다음과 같이 했습니다.

watch grep 'something' **/* --color=always

시계가 색상을 작동시키는 이스케이프 코드를 구문 분석할 수 없기 때문에 여전히 보기 흉합니다. 그러다가 이것을 발견했습니다:

watch --color grep 'something' **/* --color=always

음... 그건 안 돼요. 출력이 이상한 방식으로 조각화/혼합됩니다. 어떤 이유로 한 줄만 표시되고 watch --colorgrep은 약 20개를 출력하지 않습니다.

watch컬러 출력을 어떻게 사용할 수 있나요 grep?


분리된 사례:

다음을 사용하세요:

mkdir grep_test; cd grep_test
echo "asdsad\nasdasd\nsaasdasd" > file1 
echo "test\n123\ntest" > file2

두 개의 파일을 만들고 다음 명령을 실행합니다.

grep test * --color=always

예상대로 작동하고 출력됩니다(색상 및 기타 항목 포함).

file2:test
file2:test

하지만 시계를 사용할 때:

watch --color 'grep test * --color=always'

아무것도 출력하지 않습니다. 이 --color옵션이 없으면 ANSI 이스케이프가 해석되지 않더라도 올바른 출력이 표시됩니다. 나는 이것을 zsh가 포함된 tmux 세션의 Fedora 25에서 실행하고 있습니다.

또한 watch -v출력은 다음과 같습니다.

watch from procps-ng 3.3.10

답변1

그것은 밝혀보다컬러 출력에 정말 효과적입니다. 하지만 특별히grep다음 사항에 따라 몇 가지 해결 방법을 취해야 합니다.grep --color ANSI 코드 ESC[K를 추가합니다 - 표시된 텍스트가 변경됩니다.)

watch --color "GREP_COLORS=ne grep --color=always .* *"

관련 정보