获取文件中的最高值并根据所需计数存储下一个值

获取文件中的最高值并根据所需计数存储下一个值

假设我有计数器,它是变量。为了清楚起见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

假设目录中所有具有名称的文件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最多到v$count$v3),每个都像v_i = $max + $i

相关内容