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

如何用Bash/C-shell工具解析作业数据生成指定格式输出?

用Awk快速解析作业运行日志并生成指定格式输出

要处理这种分段的作业运行数据,Awk是最高效的选择,无需复杂的循环嵌套。下面的脚本可以直接提取你需要的字段并按要求格式输出:

BEGIN {
    FS = " = "  # 把" = "作为字段分隔符,方便提取值
}

# 遇到新作业的General信息块时,重置变量
/General Information/ {
    job = ""
    internal_status = ""
    actual_date = ""
    actual_time = ""
}

# 提取Job名称
/  Job = / {
    job = $2
}

# 提取Internal Status状态
/  Internal Status = / {
    internal_status = $2
}

# 拆分Actual Start的日期和时间
/  Actual Start = / {
    actual_date = $2
    actual_time = $3
}

# 遇到Recovery信息块时,说明当前作业的目标字段已收集完成,输出结果
/Recovery Information/ {
    if (job != "" && actual_date != "" && actual_time != "" && internal_status != "") {
        printf "%s.%s.%s.%s\n", job, actual_date, actual_time, internal_status
    }
}

使用方法

把上述脚本保存为parse_jobs.awk,然后执行:

awk -f parse_jobs.awk 你的作业数据文件.txt

输入示例

General Information
  Job = Job1
  Workstation Folder = /test/
  Workstation = xyz-test
  Monitored = No
  Requires Confirmation = No
  Interactive = No
  Critical = No
Runtime Information
  Status = Successful
  Internal Status = SUCC
  Not Satisfied Dependencies = 0
  Rerun Options =
  Rerun on the same workstation = No
  Information =
  Promoted = No
  Return Code = 0
  Return Code Mapping Expression =
Time Information
  Actual Start = 04/30/2023 00:00:05 TZ EDT
  Earliest Start = 04/30/2023 00:00:00 TZ EDT
  Latest Start = 04/30/2023 23:59:00 TZ EDT
  Latest Start Action = Suppress
  Maximum Duration =
  Maximum Duration Action =
  Minimum Duration =
  Minimum Duration Action =
  Critical Latest Start =
Recovery Information
  Action = Stop
  Message =
  Job Definition =
  Workstation Folder =
  Workstation =
Extra Run Information
  -
General Information
  Job = Job2
  Workstation Folder = /test/
  Workstation = xyz-test
  Monitored = No
  Requires Confirmation = No
  Interactive = No
  Critical = No
Runtime Information
  Status = Running
  Internal Status = EXEC
  Not Satisfied Dependencies = 0
  Rerun Options = Every run
  Rerun on the same workstation = No
  Information = Every
  Promoted = No
  Return Code =
  Return Code Mapping Expression =
Time Information
  Actual Start = 04/30/2023 19:17:12 TZ EDT
  Earliest Start = 04/30/2023 19:15:00 TZ EDT
  Latest Start = 04/30/2023 23:59:00 TZ EDT
  Latest Start Action = Suppress
  Maximum Duration =
  Maximum Duration Action =
  Minimum Duration =
  Minimum Duration Action =
  Critical Latest Start =
Recovery Information
  Action = Stop
  Message =
  Job Definition =
  Workstation Folder =
  Workstation =
  Extra Run Information
  -

输出结果

Job1.04/30/2023.00:00:05.SUCC
Job2.04/30/2023.19:17:12.EXEC

脚本说明

  • BEGIN块设置字段分隔符,让Awk自动拆分"键=值"格式的行
  • 遇到General Information时重置变量,避免不同作业的数据混淆
  • 分别匹配对应行提取目标字段
  • 用Recovery Information作为每个作业数据块的结束标记,收集齐字段后立即输出结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:23:25