一个小shell问题

hosuk1208
一个小shell问题

[root@localhost local]# cat num
12 34234 545
435 653 76547
456754 76 765
12 323 654 754 74
23 436 754 546
34  343  34535 34634
[root@localhost local]# cat bijiao
# !/bin/bash
B=0
C=0
D=0
E=0
for num in `cat /usr/local/num`
do
A=$num
if [ $A -gt $B ]
then B=$A
if [ $B -gt $C ]
then C=$B
if [ $C -gt $D ]
then D=$C
if [ $D -gt $E ]
then E=$D
fi
fi
fi
fi
done
echo $A $B $C $D $E

[root@localhost local]# ./bijiao
34634 456754 456754 456754 456754
B C D 也都成最大的数了,怎么解决?

[[i] 本帖最后由 hosuk1208 于 2008-6-19 13:03 编辑 [/i]]

hosuk1208
目的是把num里最大的5个数找出来

dgww
我对shell不太精通,随便说几句好了。。
你只是if fi判断太简单了,elif 如何?

jinl
if [ $num -gt $A ]
then
  E=$D;D=$C;C=$B;B=$A;A=$num
elif [ $num -gt $B ]
  then
    E=$D;D=$C;C=$B;B=$num
  elif [ $num -gt $C ]
    then
       E=$D;D=$C;C=$num
    elif [ $num -gt $D ]
     then
       E=$D;D=$num
     elif [ $num -gt $E ]
       then
         E=$num
      fi

kingsu
回复 #3 dgww 的帖子

意识流....
可以去玩dota!

hosuk1208
谢谢.....

hosuk1208
我觉得麻烦就用 sed 's/ //n/g' num|sort -n>num1

[[i] 本帖最后由 hosuk1208 于 2008-6-19 16:52 编辑 [/i]]

dgww
回复 #5 kingsu 的帖子

我更喜欢GGXX

hosuk1208
谢谢大家

[[i] 本帖最后由 hosuk1208 于 2008-6-19 15:38 编辑 [/i]]

ly5066113
xargs -n1 < num | sort -nr | head -5

ruifox
awk '{for(i=1;i<=NF;i++) print $i}' num|sort -un|tail -5