Eu tenho um arquivo que parece,
1 0 0 1.23
1 1 0 1.46
1 2 0 1.69
1 3 0 1.92
1 4 1.23 1.23
1 5 1.23 1.46
1 6 1.23 1.69
1 7 1.23 1.92
1 8 1.23 2.92
2 9 0 1.23
2 10 0.1 1.46
2 11 0.1 1.69
2 12 0.1 1.92
2 13 0.1 2.95
2 14 1.25 1.23
2 15 1.25 1.46
2 16 1.25 1.69
2 17 1.25 1.93
Para um determinado valor da primeira coluna, digamos col1 = 1, gostaria de encontrar índices, escritos na segunda coluna, associados ao valor máximo da quarta coluna para cada conjunto de valores na terceira coluna, ou seja {0, 1,23} neste caso. Em outras palavras, se col1 = 1 eu gostaria de encontrar a segunda coluna dessas duas linhas
1 3 0 1.92
1 8 1.23 2.92
que são {3,8}, e para col1 = 2, eu devo pegar {13,17} que são extraídos dessas duas linhas
2 13 0.1 2.95
2 17 1.25 1.93
Eu criei um script como este
for col3 in 0 1.23
do
col1=1
max='awk -v c1=$col1 -v c3=$col3 'BEGIN{a=0;id=-1;}{if ($1==c1 && $3==c3 && $4>a) {a=$1; id=$2;}} END{print a}' mydata.dat'
done
que pode encontrar o máximo, mas devo definir uma variável externa para definir a terceira coluna. Infelizmente, a saída não gera uma lista. Alguém tem uma sugestão melhor?
Tags awk