我有以下gawk脚本:
BEGIN{
count = 0
imp = ""
time = 0
}
{
if(count==0){
imp = $0
time = $7
count = 1
}
else if(count==1 || count==2){
if($7 < time){
imp = $0
time = $7
}
count+=1
}
else{
count=0
print imp
}
}
和一堆这样的文件:
1 57 0.850000 0.000010 0.784696 0.114561 0.670135
1 57 0.850000 0.000010 0.783619 0.114349 0.669270
1 57 0.850000 0.000010 0.725526 0.114805 0.610721
2 57 0.850000 0.000010 1.590584 0.102643 1.487942
2 57 0.850000 0.000010 1.291972 0.076006 1.215967
2 57 0.850000 0.000010 1.224136 0.063005 1.161131
4 57 0.850000 0.000010 0.679327 0.062899 0.616428
4 57 0.850000 0.000010 0.680867 0.062456 0.618411
4 57 0.850000 0.000010 0.684800 0.063411 0.621389
8 57 0.850000 0.000010 0.374985 0.063619 0.311367
8 57 0.850000 0.000010 0.401494 0.062838 0.338655
8 57 0.850000 0.000010 0.405216 0.064353 0.340862
12 57 0.850000 0.000010 0.317534 0.063243 0.254290
12 57 0.850000 0.000010 0.317531 0.063118 0.254413
12 57 0.850000 0.000010 0.318544 0.063321 0.255222
16 57 0.850000 0.000010 0.379314 0.063865 0.315448
16 57 0.850000 0.000010 0.382251 0.064108 0.318144
16 57 0.850000 0.000010 0.381444 0.063148 0.318296
20 57 0.850000 0.000010 0.333159 0.063614 0.269545
20 57 0.850000 0.000010 0.336454 0.063309 0.273144
20 57 0.850000 0.000010 0.333363 0.063646 0.269717
24 57 0.850000 0.000010 0.589092 0.066359 0.522733
24 57 0.850000 0.000010 0.429424 0.066578 0.362845
24 57 0.850000 0.000010 0.335697 0.068287 0.267411
1 100 0.850000 0.000000 0.793457 0.060388 0.733069
1 100 0.850000 0.000000 0.791233 0.060041 0.731192
1 100 0.850000 0.000000 0.789624 0.060151 0.729474
2 100 0.850000 0.000000 2.140322 0.063280 2.077041
2 100 0.850000 0.000000 2.104924 0.063320 2.041604
2 100 0.850000 0.000000 2.110660 0.063040 2.047621
4 100 0.850000 0.000000 1.145730 0.063037 1.082693
4 100 0.850000 0.000000 1.139739 0.062964 1.076775
4 100 0.850000 0.000000 1.141787 0.063186 1.078601
8 100 0.850000 0.000000 0.656741 0.063040 0.593701
8 100 0.850000 0.000000 0.660081 0.063351 0.596730
8 100 0.850000 0.000000 0.659872 0.063350 0.596522
12 100 0.850000 0.000000 0.511580 0.063247 0.448333
12 100 0.850000 0.000000 0.509540 0.063253 0.446287
12 100 0.850000 0.000000 0.503905 0.062864 0.441041
16 100 0.850000 0.000000 0.613314 0.063025 0.550289
16 100 0.850000 0.000000 0.619024 0.063526 0.555498
16 100 0.850000 0.000000 0.622365 0.063735 0.558631
20 100 0.850000 0.000000 0.590244 0.063859 0.526385
20 100 0.850000 0.000000 0.537661 0.063859 0.473802
20 100 0.850000 0.000000 0.531875 0.063343 0.468532
24 100 0.850000 0.000000 0.484166 0.066820 0.417346
24 100 0.850000 0.000000 0.694105 0.069127 0.624978
24 100 0.850000 0.000000 1.569517 0.070212 1.499304
行[1,3],[4,6],[7,9]等始终具有相同的$ 1,而所有其他列均不同。而且我希望整行都具有最后一列的最小值,并排除其他两列,但是我现在执行的此脚本现在可以正常工作。
所以结果应该是:
1 57 0.850000 0.000010 0.725526 0.114805 0.610721
2 57 0.850000 0.000010 1.224136 0.063005 1.161131
4 57 0.850000 0.000010 0.679327 0.062899 0.616428
8 57 0.850000 0.000010 0.374985 0.063619 0.311367
12 57 0.850000 0.000010 0.317534 0.063243 0.254290
16 57 0.850000 0.000010 0.379314 0.063865 0.315448
20 57 0.850000 0.000010 0.333159 0.063614 0.269545
24 57 0.850000 0.000010 0.335697 0.068287 0.267411
1 100 0.850000 0.000000 0.789624 0.060151 0.729474
2 100 0.850000 0.000000 2.104924 0.063320 2.041604
4 100 0.850000 0.000000 1.139739 0.062964 1.076775
8 100 0.850000 0.000000 0.656741 0.063040 0.593701
12 100 0.850000 0.000000 0.503905 0.062864 0.441041
16 100 0.850000 0.000000 0.613314 0.063025 0.550289
20 100 0.850000 0.000000 0.531875 0.063343 0.468532
24 100 0.850000 0.000000 0.484166 0.066820 0.417346
提前致谢
根据您所讨论的输入和输出示例,此一线工作:
awk 'NR%3==1{if(a)print a;a=$0;v=$NF;next}$NF<v{a=$0;v=$NF}END{print a}' file
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句