免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4191 | 回复: 8
打印 上一主题 下一主题

如何判断一个文件中数字连续性 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-11 15:26 |只看该作者 |倒序浏览
有一文件中有下列:目前想写一脚本,如果列中数字连续相差1,连续相差10次以上,把开始相差的第一个数字提出来.其他的连续相差不超过10次和不相关的的数字不提取.
1234
3456
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1353
2445
1335
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
6446
6449
6480
6490
6780
6781
6782
6783
6789





目的是只把1112,5346提取出来,其他的不要.该如何实现?

[ 本帖最后由 iamwzh2003 于 2008-12-11 15:28 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
2 [报告]
发表于 2008-12-11 15:49 |只看该作者
  1. awk '{a[NR]=$0}END{for(i=2;i<NR;i++) if(a[i-1]+1!=a[i]&&a[i]+1==a[i+1]) print a[i]}' urfile
复制代码

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
3 [报告]
发表于 2008-12-11 16:10 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
4 [报告]
发表于 2008-12-11 16:18 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
5 [报告]
发表于 2008-12-11 16:18 |只看该作者

回复 #3 ILoveMK 的帖子

晕,楼主改需求了。

  1. awk '{if(s+1==$1) k++;else{if(k>=10) print s-k;k=0};s=$1}' urfile
复制代码

[ 本帖最后由 ly5066113 于 2008-12-11 16:20 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2008-12-11 16:23 |只看该作者
谢谢啊,我测试一下

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
7 [报告]
发表于 2008-12-11 16:27 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
8 [报告]
发表于 2008-12-11 16:49 |只看该作者

回复 #7 ILoveMK 的帖子

没有考虑过多的情况,只是根据楼主的数据写的代码。

可以再试试下面的,考虑了首尾都会出现连续的情况。
awk '{if(s+1==$1&&NR>1) k++;else{if(k> print s-k;k=0};s=$1}END{if(k> print s-k}' urfile

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
9 [报告]
发表于 2008-12-11 17:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP