簡體   English   中英

Gawk無法在3行之間找到最小值

[英]Gawk not working correctly in finding min between 3 lines

我有以下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

更改:

else{
    count=0
    print imp
}

至:

else{
    print imp

    imp = $0
    time = $7
    count=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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM