Comparando vários arquivos e imprimindo valores maiores junto com nomes de arquivos

0

Eu tenho cerca de 2000 arquivos no seguinte formato:

FILEA: WHWH-19975612.txt

0.1   70  30
0.01  70  32
0.9   72  32
...

ARQUIVO: WHWH-20004526.txt

0.2   70 30
0.001 70 32
1.0   72 32
...

Saída desejada

0.2  70 30  WHWH-20004526
0.01 70 32  WHWH-19975612
1.0  72 32  WHWH-20004526
...

Fazer isso acompanhará os arquivos em que valores maiores estão presentes, o que eu posso chamar para processamento adicional.

    
por Ramiz 22.02.2017 / 15:23

1 resposta

0

Contanto que o número de arquivos se encaixe em uma chamada para awk , você pode fazer:

awk '{ if ($1 > maxvalues[$2" "$3]) { 
         maxvalues[$2" "$3]=$1; 
         maxfiles[$2" "$3]=FILENAME; 
       }
     } 
     END { 
       for (i in maxvalues) printf "%-4s %5s %s\n", maxvalues[i], i, maxfiles[i] 
    }' \
    *

Eu criei um conjunto de testes de arquivos com seus dados de amostra e, em seguida, executando:

for((i=20004527;i<20006526;i++))
do 
  cp WHWH-20004526.txt WHWH-${i}.txt
done

... para criar arquivos de dados ~ 2000 para trabalhar.

    
por 25.02.2017 / 03:58