我一直在研究这个问题并且无法找到解决方案。任何帮助,将不胜感激。我正在UNIX工作站上工作,并且有一个30-40 meg的文本文件,我正在使用它。在我的真实文件中有数百个工作。输入文件示例;
# misc logging data
Job 1 start
Task start
Task stop
Task start
Task stop
Job 1 stop
# Other misc logging data
Job 2 start
Task start
Task stop
Job 2 stop
# Other misc logging data
Job 3 start
Task start
Task stop
Task start
Task stop
Task start
Task stop
Job 3 stop
我想要的输出是:
Job 1, 2 Tasks
Job 2, 1 Tasks
Job 3, 3 Tasks
再次感谢...
答案 0 :(得分:0)
awk '/^Job .* start$/ { jobname = $2; taskcount = 0; }
/^Task start/ { taskcount++; }
/^Job .* stop$/ { printf "Job %s, %d Tasks\n", jobname, taskcount; }'
这不会进行大量检查(确保作业结束是已启动的作业;检查每个已启动的任务是否已停止等),但它会处理您提供的数据并提供您需要的输出
如果“其他错误记录数据”行可能包含与给定作业及其任务混淆的内容(可能与任务起始行匹配等),那么您必须更聪明一点。