当我svn up
时,平均得到~100行输出。此外还有X-teen外部设备,总共更新约30秒(它们每2-3个弹出一个接一个)。
我想到了这个输出的着色(可能是变换),这样我就能更清楚地看到它。
我知道我可以使用sed
来做到这一点,但它需要一个讨厌格式的正则表达式 - 许多转义字符。
另一方面,perl
需要更清晰的正则表达式,但它在打印输出之前等待整个输入 - 我得到30秒没有任何东西,BAM整个输出一次出现。
up.sh
#!/bin/bash
svn up $@ \
| grep -vE "^\s*$|revision" \
| ${arhbin}/coloring/svn.sh \
$ {arhbin} /coloring/color_definitions.sh
#!/bin/bash
source ${arhbin}/coloring/color_definitions.sh
cat \
| perl -pe 's/(^ *A.*$)/'$GREEN'\1'$NORMAL'/igs' \
| perl -pe 's/(^ *D.*$)/'$RED'\1'$NORMAL'/igs' \
| perl -pe 's/(^ *C.*$)/'$RED_BG'\1'$NORMAL'/igs' \
| perl -pe 's/(^ *[?].*$)/'$BLUE'\1'$NORMAL'/igs' \
| perl -pe 's/(^ *G.*$)/'$BLUE'\1'$NORMAL'/igs' \
如何使用Perl / Python(如正则表达式)在运行时为输出命令输出颜色?
答案 0 :(得分:1)
在Linux上,您可以使用stdbuf
来调整io缓冲。像这样:
stdbuf -oL svn up "$@" | perl ...