免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3103 | 回复: 11
打印 上一主题 下一主题

抽出数组中不连续的值 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-12 13:07 |只看该作者 |倒序浏览
1
2
3
4
7
8
9
10
101
102
104
105
106
107
108
109
110
701
702
703
704
706
707
709
710

如上所示:抽出数据5,6,103,705,708
用awk纯脚本怎么样实现,高手急求!!!!!

论坛徽章:
0
2 [报告]
发表于 2012-07-12 13:12 |只看该作者
回复 1# jenny815


    你这要靠啥才能判断是连续? 11到100呢?

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2012-07-12 13:38 |只看该作者
回复 1# jenny815


    awk '{if(t!=$0&&NR>1){for(i=t;i<$0;i++)print i};t=$0+1}'

论坛徽章:
0
4 [报告]
发表于 2012-07-12 13:44 |只看该作者
回复 3# yinyuemi


    这个把所有的不连续的都输出来了,不是指定的那几个

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
5 [报告]
发表于 2012-07-12 13:46 |只看该作者
回复 4# guoweiqust


    没有规则,怎么知道那些是你所要的呢?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2012-07-12 13:55 |只看该作者
首先,LZ确保数字是从小到大的吧

论坛徽章:
0
7 [报告]
发表于 2012-07-12 14:12 |只看该作者
  1. awk '{a[NR]=$0}END{for(i=2;i<=NR;i++) if(a[i] != a[i-1]+1 && a[i-1]+90 > a[i+1])for(k=1;k<a[i]-a[i-1];k++)print a[i-1]+k}' file
  2. 只针对所给数据,楼主没有给出固定的规律,我就凑合写个
复制代码

论坛徽章:
0
8 [报告]
发表于 2012-07-12 15:15 |只看该作者
楼主猜一下  你给的例子不好  很微观,  要是第一个不是1开始的 可能有的代码就不行了

论坛徽章:
0
9 [报告]
发表于 2012-07-12 15:25 |只看该作者
先把输入数据SORT一下
  1. NR==1{a=$1}
  2. NR>1{
  3. b=$1-a-1;
  4. # print $1-a-1 ;
  5. if(b)
  6.    {
  7.      for(i=1;i<=b;i++)
  8.       print a+i
  9.    }
  10. a=$1
  11.     }
复制代码

论坛徽章:
0
10 [报告]
发表于 2012-07-13 10:30 |只看该作者
回复 2# personball


    可以先找出最小值,已经解决了,谢谢各位!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP