尾部-f | sed。修改文字颜色

尾部-f | sed。修改文字颜色

我正在修改 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

会给行号着色。

相关内容