You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用sed/awk按唯一pid过滤特定组件的日志行

按组件+唯一PID过滤日志行的解决方案

针对你这种按组件分组、每个PID只保留首条日志的需求,用awk就能快速搞定,不用写复杂脚本。

通用方案(处理所有组件,保留每个PID的首行)

直接运行这条命令,就能输出你想要的结果:

awk -F'|' '!seen[$5,$6]++ || /^$/' your_log_file.log

命令解释:

  • -F'|':告诉awk日志字段用|分隔
  • !seen[$5,$6]++:$5是组件名(比如componentA),$6是PID,用这两个组合作为唯一标识。第一次遇到某组件+PID的组合时,seen数组值为0,取反后为真,输出该行;之后再遇到同一组合时,seen值递增,取反为假,跳过该行
  • || /^$/:保留日志里的空行,维持原有的组件分组结构

针对特定组件的过滤(比如只处理componentA)

如果只想对某个组件去重PID,其他组件保持原样,用这条:

awk -F'|' '/^$/ {print; next} $5 == "componentA" {if(!seen[$6]++) print; next} 1' your_log_file.log

命令解释:

  • /^$/ {print; next}:遇到空行直接打印,然后跳过后续判断
  • $5 == "componentA" {if(!seen[$6]++) print; next}:只对componentA的行,按PID去重,保留首行
  • 1:其他所有行(非componentA的)正常打印,如果不需要保留其他组件,删掉1即可

把your_log_file.log换成你的实际日志文件名就行,测试下来完全匹配你要的输出格式。

内容的提问来源于stack exchange,提问作者Varun Chawla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:07:10