我正在修改 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
会给行号着色。