我有一个包装 mvn (Apache Maven) 的 bash 脚本来为其输出添加颜色。它所做的简化版本是:
mvn "$@" | sed -e "s/^\[INFO\] \-.*/$bldblu&$rst/g"
哪里$bldblu
是粗体蓝色的 ANSI 颜色转义字符,并$rst
重置颜色。
我遇到的问题是,有时 mvn 会写一行不以换行符结尾的行,因此(据我所知) sed 一直在等待输入并且从不打印提示(这使得 Maven 看起来像挂起)。我尝试添加-u
到 sed ,但这只是强制 sed 进行逐行缓冲而不是缓冲多行 - 对我没有帮助。
到目前为止,这就是我想出的:
mvn "$@" | perl -pe "$| = 1; s/^(\[INFO\] \-.*)/$bldblu\$1$rst/g"
但我认为-p
这里的使用不正确。有什么帮助吗?