我想以“hhmm”格式打印每个事件的开始时间和结束时间的最大并发事件数量(下面的示例输入)
$ cat input.txt
1030,1100
1032,1100
1032,1033
1033,1050
1034,1054
1039,1043
1040,1300
为此,我会
用于查找此输入的并发事件的awk脚本的预期输出将是
0
1
2
2
2
4
0
我的awk充其量只是初步的,我在执行第2步时遇到了困难。 我希望这是一个纯粹的脚本,而不是像Java一样使用重量级的语言。 因此,awk大师的任何帮助都将受到高度赞赏。任何非awk linux one line也是最受欢迎的。
答案 0 :(得分:0)
BEGIN {FS="\,"; i=0}
{ superpos=0;
for (j=1; j<=i; j++ ){
if($2 < a[j,2])
++superpos
}
a[++i,1]=$1;
a[i,2]=$2;
print superpos;
a[i,3]=superpos;
}
END{ max=0;
for (j=1; j<=i; j++ ){
if ( a[j,3]>max)
max= a[j,3];
}
print "max = ",max;
}
运行
HTH!
输出:
0
0
2
2
2
4
0
max = 4
修改
或者更糟糕,如果你愿意的话:
BEGIN {FS="\,"; max=0 }
{
b=0;
for (var in a){
if($2 < a[var]) b++;
}
a[NR]=$2;
print b;
if (b > max) max = b;
}
END { print "max = ", max }