extrai todos os valores correspondentes de uma condição para uma lista

0

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?

    
por Shasa 30.07.2018 / 11:18

0 respostas

Tags