使用UNIX计算文本文件中两个字符串之间字符串的出现次数
我已经为此工作了一段时间,但一直无法找到解决方案。任何帮助都将不胜感激。我在UNIX工作站上工作,有一个30-40兆的文本文件。在我的真实档案中有数百份工作。输入文件的示例使用UNIX计算文本文件中两个字符串之间字符串的出现次数,unix,Unix,我已经为此工作了一段时间,但一直无法找到解决方案。任何帮助都将不胜感激。我在UNIX工作站上工作,有一个30-40兆的文本文件。在我的真实档案中有数百份工作。输入文件的示例 # 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
# 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
再次感谢
awk '/^Job .* start$/ { jobname = $2; taskcount = 0; }
/^Task start/ { taskcount++; }
/^Job .* stop$/ { printf "Job %s, %d Tasks\n", jobname, taskcount; }'
这不会做很多检查(确保作业结束时是已启动的作业;检查每个已启动的任务是否已停止等),但它会处理您提供的数据并提供所需的输出
如果“其他杂项记录数据”行可能包含与给定作业及其任务相混淆的内容(可能与任务开始行相匹配,等等),那么您必须更加聪明。非常有效,谢谢。正是我需要的。