【发布时间】:2010-11-17 08:31:46
【问题描述】:
我想以“hhmm”格式打印给定每个事件的开始时间和结束时间的最大并发事件数(下面的示例输入)
$ cat input.txt
1030,1100
1032,1100
1032,1033
1033,1050
1034,1054
1039,1043
1040,1300
为此,我愿意
- 按开始时间排序(第 1 列)
- 使用 awk/sed 遍历第 2 列中的所有值(即结束时间),以查找此事件之前大于当前值的结束时间计数(即查找所有 当前正在运行的事件)。详细地说,假设 awk 正在处理第 3 行……它的结束时间是 10:33。前2个事件的结束时间分别是11:00和11:00。 由于这两个值都大于 10:33(即它们仍在 10:33 运行),因此该行的第三列(即并发作业数)将包含 2
用于查找此输入的并发事件的 awk 脚本的预期输出将是
0
1
2
2
2
4
0
- 求第三列的最大值。
我的 awk 充其量只是初级,我在实施第 2 步时遇到了困难。 我希望这是一个纯粹的脚本,而不需要使用像 java 这样的重量级语言。 因此,来自 awk 大师的任何帮助将不胜感激。也欢迎任何非 awk linux one 衬里。
【问题讨论】:
-
我已经更新了问题。 “当前值”是当前正在处理的行的结束时间
-
记得接受更适合您问题的答案(如果有的话),如果您认为值得,最终投票。