如何在 grep 日志中保留原始颜色 |码头工人 |行动

问题描述 投票:0回答:1

我已经开始使用 nektos/act 存储库在本地运行我的 Github 操作,我想要做的是仅显示 .github/workflows/lint.yml 工作流程中步骤的

原始颜色
日志。由于
--verbose
标志不允许我过滤这些日志,因此我一直在使用
grep
并且它可以通过以下命令按预期工作。

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

输出为:

steps-logs-with-grep

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

[clang-format-lint/cpp-linters]

有颜色:

act-not-steps-filtered

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


解决方案:

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

final solution

linux docker grep
1个回答
1
投票

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

如果命令没有强制颜色的选项(如

--color=always
或类似的),您可以使用
unbuffer
包中的
expect
程序,使程序的行为就像打印到终端一样。

unbuffer act ... | grep

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

© www.soinside.com 2019 - 2024. All rights reserved.