免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如何求少的数据 [复制链接]

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2020-03-18 11:36 |只看该作者 |倒序浏览
a 1
a 2
a 4
a 6
a 8
a 19
b 2
b 5
b 7
b 10

结果
a 3,5,7,9-18
b 1,3-4,6,8-9

论坛徽章:
0
2 [报告]
发表于 2020-03-18 15:44 |只看该作者
  1. awk '{a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}' a.txt
复制代码

a 3,5,7,9-18
b 1,3-4,6,8-9

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
3 [报告]
发表于 2020-03-18 21:57 |只看该作者
本帖最后由 wh7211 于 2020-03-18 22:51 编辑

回复 1# zhaopingzi


  1. cat 1
  2. a 1
  3. a 2
  4. a 4
  5. a 6
  6. a 8
  7. a 19
  8. b 2
  9. b 5
  10. b 7
  11. b 10

  12. awk '{a[$1][$2]++;b[$1]=b[$1]>$2?b[$1]:$2}END{for(i in a){for(j=1;j<=b[i];j++){if(!a[i][j]){c=c?c:j;c=c<j?c:j;d=d>j?d:j}else{if(c&&c==d){e=e?e","c:c;c=j+1}else if(c&&c!=d){e=e?e","c"-"d:c"-"d;c=j+1}}};print i,e;c=d=e=""}}' 1
  13. a 3,5,7,9-18
  14. b 1,3-4,6,8-9
复制代码

评分

参与人数 1可用积分 +10 收起 理由
飘絮絮絮丶 + 10 赞一个!

查看全部评分

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
4 [报告]
发表于 2020-03-25 12:51 |只看该作者
回复 2# Looiml


  1. $ awk '{a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}' a.txt
  2. awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
  3. awk:       ^ syntax error
  4. awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
  5. awk:                                                                                                ^ syntax error
  6. awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
  7. awk:                                                                                                    ^ syntax error
  8. awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
  9. awk:                                                                                                     ^ syntax error
  10. awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
  11. awk:                                                                                                              ^ syntax error
  12. awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
  13. awk:                                                                                                                               ^ syntax error
  14. awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
  15. awk:                                                                                                                                                          ^ syntax error
  16. awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
  17. awk:                                                                                                                                                                    ^ syntax error
  18. awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
  19. awk:                                                                                                                                                                                    ^ syntax error
复制代码



论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
5 [报告]
发表于 2020-03-25 12:53 |只看该作者
回复 3# wh7211

$ awk '{a[$1][$2]++;b[$1]=b[$1]>$2?b[$1]2}END{for(i in a){for(j=1;j<=b;j++){if(!a[j]){c=c?c:j;c=c<j?c:j;d=d>j?d:j}else{if(c&&c==d){e=e?e","c:c;c=j+1}else if(c&&c!=d){e=e?e","c"-"d:c"-"d;c=j+1}}};print i,e;c=d=e=""}}' a.txt
awk: {a[$1][$2]++;b[$1]=b[$1]>$2?b[$1]2}END{for(i in a){for(j=1;j<=b;j++){if(!a[j]){c=c?c:j;c=c<j?c:j;d=d>j?d:j}else{if(c&&c==d){e=e?e","c:c;c=j+1}else if(c&&c!=d){e=e?e","c"-"d:c"-"d;c=j+1}}};print i,e;c=d=e=""}}
awk:       ^ syntax error
awk: {a[$1][$2]++;b[$1]=b[$1]>$2?b[$1]2}END{for(i in a){for(j=1;j<=b;j++){if(!a[j]){c=c?c:j;c=c<j?c:j;d=d>j?d:j}else{if(c&&c==d){e=e?e","c:c;c=j+1}else if(c&&c!=d){e=e?e","c"-"d:c"-"d;c=j+1}}};print i,e;c=d=e=""}}
awk:                                                                                   ^ syntax error
awk: {a[$1][$2]++;b[$1]=b[$1]>$2?b[$1]2}END{for(i in a){for(j=1;j<=b;j++){if(!a[j]){c=c?c:j;c=c<j?c:j;d=d>j?d:j}else{if(c&&c==d){e=e?e","c:c;c=j+1}else if(c&&c!=d){e=e?e","c"-"d:c"-"d;c=j+1}}};print i,e;c=d=e=""}}
awk:                                                                                                                    ^ syntax error

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
6 [报告]
发表于 2020-03-25 14:47 |只看该作者
本帖最后由 wh7211 于 2020-03-25 14:49 编辑

回复 5# zhaopingzi


看一下awk版本:
  1. awk --version
复制代码

评分

参与人数 1可用积分 +10 收起 理由
飘絮絮絮丶 + 10 赞一个!

查看全部评分

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
7 [报告]
发表于 2020-03-25 15:44 |只看该作者
回复 6# wh7211

-bash-3.2# awk --version
GNU Awk 3.1.5
Copyright (C) 1989, 1991-2005 Free Software Foundation.

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
8 [报告]
发表于 2020-03-25 16:05 |只看该作者
回复 3# wh7211

# awk --version
GNU Awk 4.0.2    这个可以

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
9 [报告]
发表于 2020-03-25 16:07 |只看该作者
# awk --version
GNU Awk 4.0.2    这个可以

楼上两位的脚本都没问题

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
10 [报告]
发表于 2020-04-16 13:56 |只看该作者
回复 2# Looiml
a c 1
a c 2
a c 4
a c 6
a c 8
a c 19
b d 2
b d 5
b d 7
b d 10


如何生成:
a c  3,5,7,9-18
b d 1,3-4,6,8-9

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP