如何在Bash中屏蔽命令的指定输出行,保留其他有效日志内容?
解决方案
你可以通过管道结合grep的反向匹配能力,过滤掉不需要的日志行:
基础实现(仅过滤标准输出)
如果无用日志只输出到标准输出(stdout),使用如下命令即可:
dotnet lambda package {...} | grep -v -E 'Changed permissions on published file|zipping:'
参数说明:
-v:反向匹配,仅输出不包含指定关键词的行-E:开启扩展正则表达式,支持用|同时匹配多个关键词
兼容标准错误输出的实现
如果无用日志同时输出到了标准错误(stderr),需要先将stderr重定向到stdout再过滤:
dotnet lambda package {...} 2>&1 | grep -v -E 'Changed permissions on published file|zipping:'
保留完整日志的进阶实现
如果需要留存完整的原始日志用于排查问题,同时控制台只输出有用内容,可以搭配tee命令使用:
dotnet lambda package {...} 2>&1 | tee full_build.log | grep -v -E 'Changed permissions on published file|zipping:'
执行后完整日志会存入full_build.log文件,控制台仅展示过滤后的有用输出。
内容的提问来源于stack exchange,提问作者oleksii
相关产品推荐
相关产品推荐

