Como escolher o maior elemento numérico em muitos arquivos com muitos arrays

2

Eu tenho muitos arquivos, cada um contendo muitos arrays (como entrada 1 e 2, abaixo). Cada matriz tem dois números de elemento na segunda linha. Eu preciso usar um critério lógico para escolher o número mais alto para a primeira e segunda coluna da segunda linha e, em seguida, para imprimir o segundo número da primeira linha.

Por exemplo, na entrada de arquivo 1 apresentada abaixo, vejo que o número mais alto é 10.8 (para a primeira coluna da segunda linha), portanto, vou imprimir 6.1703 (que é o número localizado na primeira linha dessa matriz ). E o outro número mais alto é 10.1261 (para a segunda coluna da segunda linha), então vou imprimir 6.1932 (que é o número localizado na primeira linha desta matriz)

Então, eu preciso sair dessa forma para muitos array. Aqui, apresentamos apenas dois arquivos e uma saída.

Arquivo de entrada1

1: 6.1703
 10.8 2.6

2: 6.1932
 7.01640 10.1261

3: 6.5664
 6.356 8.1

4: 8.0923
 1.41 7.6

Arquivo de entrada2

1: 7.2703
 3.8 8.6

2: 7.6892
 4.7 7.6576

3: 7.85874
 16.356 5.1

4: 9.8348
 4.1 3.6

Saída

6.1703     6.1932
7.85874    7.2703
    
por alloppp 06.06.2016 / 14:03

1 resposta

2

Com o GNU awk, você pode definir como as matrizes devem ser classificadas com PROCINFO array especial. Desta forma, o problema pode ser simplificado:

awk 'BEGIN{RS='\n\n'}{a[$3]=$2; b[$4]=$2} \
     END{PROCINFO["sorted_in"]="@ind_num_asc"; \
     for(i in a) x=a[i]; for(i in b) y=b[i]; print x,y}' file1

Saída:

6.1703 6.1932

Para executar isso para todos os arquivos, faça um loop sobre todos eles no shell ou reorganize este awk snippet.

    
por 06.06.2016 / 15:05