Ubuntu下如何筛选保留含错误的日志区块?(可使用sed)
日志文件错误区块提取方案(Ubuntu环境)
需求说明
现有一份以---作为区块分隔符的日志文件,需过滤掉所有不含错误/警告信息的区块,仅保留包含remote: error:或remote: warning:的目标区块。
方案1:使用sed工具
执行以下命令即可提取目标区块:
sed -n '/^---$/{:a;N;/^---$/M!ba;/remote: error:\|remote: warning:/p}' 你的日志文件名.txt
命令逻辑解释:
-n:默认不输出任何内容,仅打印符合条件的区块/^---$/:定位每个区块的起始分隔符:a;N;/^---$/M!ba:将从当前---到下一个---之间的整个区块内容读入内存/remote: error:\|remote: warning:/p:检查区块是否包含错误或警告关键词,若包含则打印该区块
方案2:使用awk工具(更易读)
awk处理多区块文本更直观,命令如下:
awk 'BEGIN{RS="---"} /remote: error:|remote: warning:/ {print "---"$0}' 你的日志文件名.txt
命令逻辑解释:
BEGIN{RS="---"}:将日志的记录分隔符设置为---,让awk把每个区块当作一条独立记录/remote: error:|remote: warning:/:筛选出包含错误或警告的记录print "---"$0:给筛选出的记录补上前缀---,还原区块格式
验证结果
执行上述任意命令后,输出内容将与你预期的错误区块完全一致。
内容的提问来源于stack exchange,提问作者Mor.sound
相关产品推荐
相关产品推荐

