如何在 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 的东西)。
我已经开始使用 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 的东西)。