如何在 grep 的日志中保持原始颜色 | docker |行为

How to keep original color in logs for grep | docker | act

我已经开始使用 nektos/act 存储库来 运行 我的 Github 本地操作,我想做的是显示 原始颜色 仅记录我在 .github/workflows/lint.yml 的工作流程中的步骤。由于 --verbose 标志不允许我过滤这些日志,我一直在使用 grep 并且它按预期使用以下命令工作。

act push --secret-file .secrets --rm | grep -ivw -e "" -e ""

输出为:

steps-logs-with-grep

但是,如果没有 grep(仅执行命令),以以下内容开头的行:

[clang-format-lint/cpp-linters]

有色:

act-not-steps-filtered

有谁知道如何保留行为格式,但仅使用原始颜色 (yellow/blue) 过滤步骤?

解法:

unbuffer act push --secret-file .secrets --rm | grep -Ev "|"

final solution

发生这种情况的原因是,如果输出文件是终端设备,程序通常只打印终端控制序列(颜色)。如果输出通过管道传输或重定向到常规文件,通常不会打印控制序列。

如果命令没有强制颜色的选项(如 --color=always 或类似的),您可以使用 expect 包中的 unbuffer 程序,使程序的行为就像打印到终端一样。

unbuffer act ... | grep

请注意,输出将包含控制序列字符串,这可能会干扰文本过滤(使用类似 grep 的东西)。