получить наибольшее значение в файлах и сохранить следующие значения в соответствии с желаемым количеством

скажем, у меня есть счетчик, который является переменным. Для ясности, counter = 3.

И у меня есть файлы с разными значениями:

файл 1

3
4
8   

файл 2

2
3
4
5

файл 3

11
13
15  

файл 4

19
29
34

мой желаемый вывод - переменная max= 34, которую нужно напечатать.

Также, основываясь на count=3, в этом случае я должен сохранять следующие значения в переменных

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

и печатать их.

Я пробовал разные коды с if -> then и т. Д., Но ничего не приближалось.

Может кто-нибудь дать мне указатели?

Это был код, который я в последний раз пробовал

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
-1
задан 19.05.2020, 06:55

1 ответ

Предположим, все файлы с именем file* в Вашем каталоге являются теми имеющими эти значения, можно получить максимальное значение как это:

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

Или хранилище это:

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

Для определения переменных на основе этого значения сделайте:

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

Это генерирует от v1 [до 115] ($v3) в Вашем случае, будучи каждым как v_i = $max + $i.

1
ответ дан 19.05.2020, 06:56
  • 1
    +1 хороший ответ. I' d используют массив самостоятельно: v=( $((max+1)) $((max+2)) $((max+3)) ), но OP, который попросили Вара. – Kingamajick 19.05.2020, 06:57

Теги

Похожие вопросы