awk: break オプションを持つ for ループ

awk: break オプションを持つ for ループ

データの操作に使用しようとしていますawk。 2つの列を持つデータファイルがあり、特定の値を含む行を見つけたいと思います。しかし、この値を含む複数の行があるので、最初の行だけを探したいと思います。 -loopを使用forしようとしましたが、break期待どおりに機能しませんでした。

{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

2番目の列に含まれる最初の行を見つけて、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
 }

関連情報