awk: para loop com opção de quebra

1

Estou tentando usar awk para manipular dados.Tenho um arquivo de dados com duas colunas e gostaria de encontrar a linha que contém um valor específico. Mas há mais de uma linha que contém esse valor e eu só gostaria de encontrar o primeiro. Eu tentei com for -loop e break , mas não funciona como eu esperava.

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

Após esse loop, há um pouco mais de código que utiliza min e max .

Editar: os dados se parecem com isso

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

Eu gostaria de encontrar a primeira linha que contém 100 na segunda coluna e salvar o valor da coluna um em uma variável

    
por Froop 27.08.2014 / 10:11

2 respostas

0

Agora tenho uma solução em funcionamento

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
 }
    
por 01.09.2014 / 09:34
1

Você não pode usar um loop for assim. Tente algo como:

awk '$2==100{print 1,$1,$1+500; exit}' OFS='\t' file
    
por 27.08.2014 / 12:25

Tags