Maven - 在 grep 搜索中忽略 ANSI 颜色转义字符

Wes*_*Gun 7 grep ansi maven

我发现有时,mvn输出中的 ANSI 转义字符会阻止我使用 grep 进行此搜索:

mvn | grep -P "\[INFO\]"
Run Code Online (Sandbox Code Playgroud)

我必须使用"\[.*INFO.*\]"才能得到结果。

如何禁用 ANSI 转义字符的处理?我想这有一些配置吗?

Des*_*666 10

mvn也有--batch-mode( -B),这使得输出更适合 CI 或像这样的搜索,因为它更加自动化。

或者,一个通用的解决方案是使用ansi2txt工具在任何命令中去除 ANSI 颜色,该工具是colorized-logs包的一部分:

mvn | ansi2txt | grep -P "\[INFO\]"
Run Code Online (Sandbox Code Playgroud)


Wes*_*Gun 6

似乎mvn有一个配置-Dstyle.color=auto可以忽略 ANSI 颜色转义字符,这样我就不需要更改脚本中的模式来添加.*.

# define an alias including the color settings
$ alias mvn='/opt/data/maven/bin/mvn -Dstyle.color=auto'

# use the alias in the script
$ mvn | grep -P "\[INFO\]"
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.132 s
[INFO] Finished at: 2023-05-25T14:05:13+03:00
[INFO] ------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)