꼬리 -f | 텍스트 색상 수정

꼬리 -f | 텍스트 색상 수정

tail -f 이후에 텍스트를 수정하고 있습니다.
파일을 모니터링하는 다음 프로그램이 있습니다.

tail -vf -c5 /tmp/index                         \
    | cat -n                                    \
    | sed s/^[^0-9]*\\\([0-9]\\\)/__\\\1__/g -  \
    ;

sed가 tail의 출력을 성공적으로 변경했습니다.
이제 다른 터미널에서 다음을 수행할 수 있습니다.

RED='\033[0;31m';
NC='\033[0m';
printf "I ${RED}love${NC} Stack Overflow\n" 1>>/tmp/index;

테일 모니터에 업데이트가 색상으로 표시됩니다.

하지만 내가 원하는 것은 출력물에 자체적으로 색상을 추가할 수 있는 sed 프로그램입니다. 다양한 설정을 시도했지만 아무것도 작동하지 않습니다. 주로 여기 저기에 백슬래시를 추가하는 작업이 포함됩니다.

출력에 색상을 추가하는 tail-sed 프로그램을 어떻게 가질 수 있습니까?

답변1

몇 년 전에 나는 정규식 입력을 기반으로 색상을 추가하는 작은 스크립트를 작성했습니다. 예전에 포스팅한 적이 있어요여기. color디렉터리에 지정된 파일 에 스크립트를 붙여넣고 $PATH실행 가능하게 만들면 다음을 수행할 수 있습니다.

tail -vf -c5 /tmp/index | 
  cat -n  |
  color -l '^\s*\d+'

또는 더 수동적으로:

tail -vf -c5 /tmp/index | 
  cat -n  |   
  perl -pe 's#^.*?\d+#\x1b[31m$&\x1b[0m#;'

또는 sed:

tail -vf -c5 /tmp/index | 
  cat -n  |   
  sed -E 's#^[^0-9]*[0-9]*#\x1b[31m&\x1b[0m#;'

아니면 Perl에서 모든 작업을 수행할 수도 있습니다.

tail -vf -c5 /tmp/index |    
  perl -pe 's#^#\x1b[31m $. \x1b[0m#;'

답변2

tail whatever | cat -n | grep -E '^[ 0-9]+' --color

줄 번호가 색칠됩니다.

관련 정보