有没有什么命令或者好的算法,将一组数据中不连续的数值显示出来?

有没有什么命令或者好的算法,将一组数据中不连续的数值显示出来?

假如一组数组如下:
引用:
57345 57346 57348 57350 57352 57353
我要在shell中,将其中不连续的57347 57349 57351都显示出来,你们有碰到过这样的问题么?
>
>
>

      
这样就可以
复制内容到剪贴板
代码:
[root@localhost shell]# cat contine
#!/bin/bash
line[0]=57345
line[1]=57346
line[2]=57348
line[3]=57350
line[4]=57352
line[5]=57353
i=0
while [ ${line[i]} ]
do
let tmp=${line[i+1]}-${line[i]}
for(( j=1;j<$tmp;j++))
do
   let tt=${line[i]}+$j
   echo $tt
done
let i=i+1
done
[root@localhost shell]# ./contine
57347
57349
57351
      
最后 一个  前俩个粘贴时有遗漏      
有两个问题,我实际调用的时候,这个数组可能是在不断动态变化的,我不可能每一个都这样去给它们一一去定义,二来,可能是在几百个数据中进行查找,这样不是很不方便?
如果是这种思路的话,其实我用一个C的小程序,然后去调用它来处理就可以了,因为C对数组的处理要比shell强很多了.      
没看懂问题,呵呵,是说在一个不规则的数组中,隔一个取一个吗?      
不是,用来检查这串数组中跳号的部分,就是将不连续的数字列出来就好了,应当不难看懂吧      
排序
取出最小的和最大的值
然后在这两值间的循环中检查每一个值是否已经出现过了      
在学awk,尝试用awk解决~如下
echo "57345 57346 57348 57350 57352 57353"|awk '{
i=1;
while (i < NF)
{
j=1;
while(j < ($(i+1) - $i) ){print $i+j;j++;}
i++;
}
}'

刚回首了一下,方法和040410615 雷同