データの操作に使用しようとしています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
}