obtendo o maior valor nos arquivos e armazenando os próximos valores conforme a contagem desejada

-1

Digamos que eu tenha contador, que é variável. Para maior clareza, counter = 3 .

E eu tenho arquivos com valores diferentes:

arquivo 1

3
4
8   

arquivo 2

2
3
4
5

arquivo 3

11
13
15  

arquivo 4

19
29
34

minha saída desejada é uma variável max= 34 precisa ser impressa.

Também com base em count=3 , nesse caso, devo armazenar os próximos valores nas variáveis

variable A= 35
variable B =36
variable C =37

e imprima-os.

Eu tentei códigos diferentes com if -> then etc, mas nada se aproximava.

alguém pode me dar dicas?

Este foi o código que eu tentei pela última vez

f1mx = 'cat file1 | grep "." | tail -1'
f2mx = 'cat file2 | grep "." | tail -1'
f3mx = 'cat file3 | grep "." | tail -1'
f4mx = 'cat file4 | grep "." | tail -1'

if [ $f1mx \> $f2mx ];
then 
    f12mx=$f1mx
else 
    f12mx=$f2mx;
fi;

if [ $f3mx \> $f4mx ];
then 
    f34mx=$f3mx
else 
    f34mx=$f4mx;
fi;

if [ $f12mx \> $f34mx ];
then 
    fmax=$f12mx
else 
    fmax=$f34mx
fi;

echo "fmax"

i=0
while [  $i -le $counter ]; 
do
    a[$i]=$fmax+1
    echo $a[$i];
    let i=i+1 
done
    
por user261334 07.04.2014 / 13:12

1 resposta

1

Supondo que todos os arquivos com o nome file* em seu diretório sejam os que possuem esses valores, você pode obter o valor máximo assim:

$ cat f* | sort -n | tail -1
34

Ou armazene:

$ max=$(cat f* | sort -n | tail -1)
$ echo $max
34

Para definir variáveis com base nesse valor, faça:

for i in $(seq $count)
do
    declare v$i=$((max + $i))
done

Isso gerará de v1 até v$count ( $v3 ) no seu caso, sendo cada um deles como v_i = $max + $i .

    
por fedorqui 07.04.2014 / 14:17