awk:带有中断选项的 for 循环

awk:带有中断选项的 for 循环

我正在尝试使用awk它来操作数据。我有一个包含两列的数据文件,我想找到包含特定值的行。但有不止一行包含该值,我只想找到第一行。我用 -loop 尝试过forbreak但它没有按我预期的方式工作。

{for (i=0;$2==100.0;min=$1){
        i++
        max=min+500
        if(i==1){
            print i"\t"min"\t"max
            break
            }
        }
}

在此循环之后,还有一些使用min和 的代码max

编辑:数据看起来像这样

59.45   96
59.50   96
59.60   97
59.75   98
59.90   98
59.95   98
60.00   99
60.05   99
60.20   99
60.25   100
60.40   100
60.45   100
60.50   101
60.55   101
60.60   101
60.65   101
60.70   102
60.90   102
60.95   103
61.00   103
61.05   103
61.15   103
61.20   104
61.35   104
61.40   104
61.45   105
61.50   105
61.60   105
61.65   106
61.70   100
61.85   100

我想找到100第二列中包含的第一行并将第一列中的值保存在变量中

答案1

你不能使用这样的 for 循环。尝试类似的方法:

awk '$2==100{print 1,$1,$1+500; exit}' OFS='\t' file

答案2

现在我有一个可行的解决方案

BEGIN {
    SearchMinFlag = 0;
    TempLimit = 195.0
    DeltaTime = 550
    TempMin = "LEER"
    FS = "\t"
}

# Stop MinSearch
NR > 2 && $1 > tstop {SearchMinFlag = 0}

# MinSearch
SearchMinFlag == 1 {
    ywert = $2;
    if (ywert < TempMin) {
        TempMin = ywert;
        TimeMin = $1
        }
}

# Start MinSearch
NR > 2 && $2 > TempLimit && SearchMinFlag == 0 && TempMin == "LEER" {
        SearchMinFlag = 1;
        tstart = $1
        tstop = tstart + DeltaTime
        ymerk = $2;
        TempMin = 10000
    }

# Result
END {
    print "t(T_min)", "T_min", "t_start", "t_stop\n"TimeMin, TempMin, tstart, tstop
 }

相关内容