当前位置 博文首页 > linux shell实现求一个多维数组中的最大和最小值

    linux shell实现求一个多维数组中的最大和最小值

    作者:admin 时间:2021-07-04 18:42

    同事发了一道shell题,是求一个多维数组中的最大和最小值
    如文件 99file:
     
    33      55      23      56      99
    234     234     545     6546    34
    11      43      534     33      75
    43      34      76      756     33
    343     890     77      667     55

    我的实现之一:

    #! /bin/bash
    echo "the file is :"
    cat 99shu
    max=0
    min=999999
    line=1
    dnum=$(cat 99shu| wc -l)
    while (($line<=$dnum))
    do
    for i in $(cat 99shu|head -"$line")
        do
      ((max<$i))&&max=$i
        ((min>$i))&&min=$i
        done
    let ++line
    done
     
    echo "the max number is: $max"
    echo "the min number is : $min"

    结果:

    the max number is: 6546
    the min number is : 11

    实现之二:

    #! /bin/bash
    # echo the MAX and the MIN
    
    echo "the numbers is:"
    cat 99shu
    mnum=0
    min=99999
    while  read line 
    do
    declare -a arr=($line)
    lnum=$(echo $line | wc -w)
    i=0
    while (( $i<$lnum ))
    do
    (($mnum<${arr[i]})) && mnum=${arr[i]}
    (($min>${arr[i]})) && min=${arr[i]}
    let ++i
    done
    done < 99shu
    echo "the max number is $mnum"
    echo "the min number is $min"

    实现3,强大的awk

    #! /bin/bash
    echo "the MAX number is: $( cat 99shu | awk '{for(i=1;i<=NF;i++)if(max<$i) max=$i;print max}'|tail -1)"
    echo "eht MIN number is: $( cat 99shu | awk '{min=999999;for(i=1;i<=NF;i++)if(min>$i)min=$i;print min}'|sort|head -1 )"

    实现4:

    #!/bin/bash
    min=$(cat  99shu | tr "\t" "\n"|tr " " "\n"|sort -n|uniq|grep -v "^$"|head -1)
    max=$(cat  99shu | tr "\t" "\n"|tr " " "\n"|sort -n|uniq|grep -v "^$"|tail -1)
    echo "The MAX number is $max"
    echo "The MIN number is $min"

    jsjbwy
    下一篇:没有了