免费注册 查看新帖 |

Chinaunix

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

[文本处理] 关于文本内容合并 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-08 19:39 |只看该作者 |正序浏览
按照第二列范围压缩显示

cat file:
111 1
111 2
333 7
222 6
222 9
111 3
222 10
333 3
333 4
333 5
333 6

result:
111 1-3
222 6-6
222 9-10
333 3-7

论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
14 [报告]
发表于 2016-05-09 17:12 |只看该作者
回复 13# sunzhiguolu


    我也不清楚呀, 就是上次认证过后就红了, 我看到有些是红的, 有些是蓝的, 不知道有什么特殊含义

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
13 [报告]
发表于 2016-05-09 16:59 |只看该作者
回复 6# elu_ligao
大神能问下, 您这个 ID 咋是红的,

   

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
12 [报告]
发表于 2016-05-09 16:33 |只看该作者
都是传说中的战斗机啊, 向各位大神致敬!

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
11 [报告]
发表于 2016-05-09 11:29 |只看该作者
本帖最后由 haooooaaa 于 2016-05-09 17:39 编辑

回复 5# dahaoshanhe


    前面那个是错的, 用的awk 4.0

下面这个python 测试可以,
  1. result = {}

  2. with open("file") as f:
  3.     for i in f:
  4.         try: result.setdefault(i.split()[0],[]).append(int(i.split()[-1]))
  5.         except: pass
  6.             
  7. for i in result:
  8.     li = sorted(result[i])
  9.     start = end = li[0]
  10.     for j in li[1:]:
  11.         if j - 1 == end:
  12.             end = j
  13.         else:
  14.             print "%s %s-%s" % (i,start,end)
  15.             start = end = j
  16.     print "%s %s-%s" % (i,start,end)
复制代码
这样更好一点。

评分

参与人数 1信誉积分 +10 收起 理由
dahaoshanhe + 10 赞一个!你会的语言真不少啊

查看全部评分

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
10 [报告]
发表于 2016-05-09 10:36 |只看该作者
回复 5# dahaoshanhe

$ awk 'function xsort(v,s ,t,n,e){split(s,c," ");t=asort(c);e=c[1];printf ("%s %d-",v,e);for(n=2;n<=t;++n){if(c[n]-e-1)printf("%d\n%s %d-",e,v,c[n]);e=c[n]}print e}{a[$1]=a[$1]$2" "}END{t=asorti(a,b);for(n=1;n<=t;++n){xsort(b[n],a[b[n]])}}' file
111 1-3
222 6-6
222 9-10
333 3-7

   

评分

参与人数 1信誉积分 +10 收起 理由
sunzhiguolu + 10 向大神学习, 天天向上!!!

查看全部评分

求职 : 技术支持/维
论坛徽章:
0
9 [报告]
发表于 2016-05-09 10:04 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2016-05-09 10:02 |只看该作者
回复 7# jcdiy0601


    我和你的思路一样,只是SORT伤不起啊,有2亿多行记录,效率不高。

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
7 [报告]
发表于 2016-05-09 09:39 |只看该作者
sort -n -k2,2 file|awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i,a[i]}'|awk '{print $1,$2"-"$NF}'
111 1-3
222 6-10
333 3-7

论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
6 [报告]
发表于 2016-05-09 09:16 |只看该作者
  1. awk '{a[$1]=a[$1] $2 FS}END{for(i in a){l=split(a[i],b);asort(b);printf i FS b[1]"-";for(k=2;k<=l;++k){if(b[k]!=b[k-1]+1)printf b[k-1]"\n"i FS b[k]"-"};printf b[k-1]"\n"}}'
复制代码

评分

参与人数 1信誉积分 +10 收起 理由
dahaoshanhe + 10

查看全部评分

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP