linux shell实现求一个多维数组中的最大和最小值
同事发了一道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"thefileis:" cat99shu max=0 min=999999 line=1 dnum=$(cat99shu|wc-l) while(($line<=$dnum)) do foriin$(cat99shu|head-"$line") do ((max<$i))&&max=$i ((min>$i))&&min=$i done let++line done echo"themaxnumberis:$max" echo"theminnumberis:$min"
结果:
themaxnumberis:6546
theminnumberis:11
实现之二:
#!/bin/bash
#echotheMAXandtheMIN
echo"thenumbersis:"
cat99shu
mnum=0
min=99999
whilereadline
do
declare-aarr=($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"themaxnumberis$mnum"
echo"theminnumberis$min"
实现3,强大的awk
#!/bin/bash
echo"theMAXnumberis:$(cat99shu|awk'{for(i=1;i<=NF;i++)if(max<$i)max=$i;printmax}'|tail-1)"
echo"ehtMINnumberis:$(cat99shu|awk'{min=999999;for(i=1;i<=NF;i++)if(min>$i)min=$i;printmin}'|sort|head-1)"
实现4:
#!/bin/bash min=$(cat99shu|tr"\t""\n"|tr"""\n"|sort-n|uniq|grep-v"^$"|head-1) max=$(cat99shu|tr"\t""\n"|tr"""\n"|sort-n|uniq|grep-v"^$"|tail-1) echo"TheMAXnumberis$max" echo"TheMINnumberis$min"
热门推荐
7 简短的二胎祝福语
10 简短霸气女儿生日 祝福语
11 祝福语高考小众诗句简短
12 元旦祝福语20秒简短
13 老师过年祝福语大全 简短
14 一生祝福语简短
15 产检祝福语简短霸气
16 朋友店开张祝福语简短
17 生日爱情祝福语大全简短
18 朋友女儿生日祝福语 简短