免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3570 | 回复: 14

求助:在txt的6列数据中把相同列的行统计分类另存(完美解决) [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2016-12-18 23:57 |显示全部楼层
本帖最后由 hkldd 于 2016-12-31 14:42 编辑

大家好!我有个问题需要麻烦各位了,具体需求如下;
   由01-99随机组成的6列若干行无重复的txt文档,如样本文件a.txt,想要得到其中6列相同的行,保存到6.txt
中,同理,其中5列相同的行,保存到5.txt中,以此类推分别得到;4.txt、3.txt、2.txt、1.txt等文档,不知是
否会出现1个列都没有相同的小概率行,假如有就保存到0.txt中,请大家写个代码,把a.txt按相同列数分类另存,
谢谢大家!
a.txt(这个文档是用excel拉出来的,不是随机的大数据,结果中的6.txt可能等同a.txt)
  1. 01 02 03 04 05 06
  2. 02 03 04 05 06 07
  3. 03 04 05 06 07 08
  4. 04 05 06 07 08 09
  5. 05 06 07 08 09 10
  6. 06 07 08 09 10 11
  7. 07 08 09 10 11 12
  8. 08 09 10 11 12 13
  9. 09 10 11 12 13 14
  10. 10 11 12 13 14 15
  11. 11 12 13 14 15 16
  12. 12 13 14 15 16 17
  13. 13 14 15 16 17 18
  14. 14 15 16 17 18 19
  15. 15 16 17 18 19 20
  16. 16 17 18 19 20 21
  17. 17 18 19 20 21 22
  18. 18 19 20 21 22 23
  19. 19 20 21 22 23 24
  20. 20 21 22 23 24 25
  21. 21 22 23 24 25 26
  22. 22 23 24 25 26 27
  23. 23 24 25 26 27 28
  24. 24 25 26 27 28 29
  25. 25 26 27 28 29 30
  26. 26 27 28 29 30 31
  27. 27 28 29 30 31 32
  28. 28 29 30 31 32 33
  29. 29 30 31 32 33 34
  30. 30 31 32 33 34 35
  31. 31 32 33 34 35 36
  32. 32 33 34 35 36 37
  33. 33 34 35 36 37 38
  34. 34 35 36 37 38 39
  35. 35 36 37 38 39 40
  36. 36 37 38 39 40 41
  37. 37 38 39 40 41 42
  38. 38 39 40 41 42 43
  39. 39 40 41 42 43 44
  40. 40 41 42 43 44 45
  41. 41 42 43 44 45 46
  42. 42 43 44 45 46 47
  43. 43 44 45 46 47 48
  44. 44 45 46 47 48 49
  45. 45 46 47 48 49 50
  46. 46 47 48 49 50 51
  47. 47 48 49 50 51 52
  48. 48 49 50 51 52 53
  49. 49 50 51 52 53 54
  50. 50 51 52 53 54 55
  51. 51 52 53 54 55 56
  52. 52 53 54 55 56 57
  53. 53 54 55 56 57 58
  54. 54 55 56 57 58 59
  55. 55 56 57 58 59 60
  56. 56 57 58 59 60 61
  57. 57 58 59 60 61 62
  58. 58 59 60 61 62 63
  59. 59 60 61 62 63 64
  60. 60 61 62 63 64 65
  61. 61 62 63 64 65 66
  62. 62 63 64 65 66 67
  63. 63 64 65 66 67 68
  64. 64 65 66 67 68 69
  65. 65 66 67 68 69 70
  66. 66 67 68 69 70 71
  67. 67 68 69 70 71 72
  68. 68 69 70 71 72 73
  69. 69 70 71 72 73 74
  70. 70 71 72 73 74 75
  71. 71 72 73 74 75 76
  72. 72 73 74 75 76 77
  73. 73 74 75 76 77 78
  74. 74 75 76 77 78 79
  75. 75 76 77 78 79 80
  76. 76 77 78 79 80 81
  77. 77 78 79 80 81 82
  78. 78 79 80 81 82 83
  79. 79 80 81 82 83 84
  80. 80 81 82 83 84 85
  81. 81 82 83 84 85 86
  82. 82 83 84 85 86 87
  83. 83 84 85 86 87 88
  84. 84 85 86 87 88 89
  85. 85 86 87 88 89 90
  86. 86 87 88 89 90 91
  87. 87 88 89 90 91 92
  88. 88 89 90 91 92 93
  89. 89 90 91 92 93 94
  90. 90 91 92 93 94 95
  91. 91 92 93 94 95 96
  92. 92 93 94 95 96 97
  93. 93 94 95 96 97 98
  94. 94 95 96 97 98 99
  95. <p> </p>
复制代码

论坛徽章:
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
发表于 2016-12-19 17:56 |显示全部楼层
由01-99随机组成的6列若干行无重复的txt文档,如样本文件a.txt,想要得到其中6列相同的行,保存到6.txt
中,同理,其中5列相同的行,保存到5.txt中,以此类推分别得到;4.txt、3.txt、2.txt、1.txt等文档,不知是
否会出现1个列都没有相同的小概率行,假如有就保存到0.txt中
不是很明白, 请解释下:
01 02 03 04 05 06
02 03 04 05 06 07
03 04 05 06 07 08

这算是5列相同的行吗, 请解释下,谢谢。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2016-12-19 21:08 |显示全部楼层
谢谢sunzhiguoluV !这种组合就是属5列相同的行

论坛徽章:
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
发表于 2016-12-19 21:56 |显示全部楼层
如果算的话, 是否属于 4 列相同的行。结果中允许冗余吗。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2016-12-19 23:17 |显示全部楼层
sunzhiguoluV 你好!麻烦你写出允许冗余与不允许冗余的两种脚本,我来测试一下,看哪个更适合我这种需求,谢谢!

论坛徽章:
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
发表于 2016-12-20 00:17 |显示全部楼层
01 02 03 04 05 06
02 03 04 05 06 07
像这种是否属于两列相同的行。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2016-12-20 00:55 |显示全部楼层
这种应属5列相同行,任意两行比对时取相同列数最大的放入相应的txt中,好像不允许沉冗才符合逻辑。

论坛徽章:
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
发表于 2016-12-20 01:39 |显示全部楼层
按照你所说的,那么4列相同的行能否举个例子。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2016-12-30 21:04 |显示全部楼层
本帖最后由 hkldd 于 2016-12-30 21:56 编辑

sunzhiguoluV !你好!
   
     不好意思,出差几天没上论坛及时回复你,是我没有述说清楚,少了一个参照对比项文档(b.txt),它也是 由01-99随机的n个数字组成的文档,这里假设它为;01 02 05 08 10 13 15 29 47 63 75 83 85 92 97
另外一个要分类的文档(a.txt)它的内容,就是上面那个文档是我用手工做的示例,由毎行6列的数组成的若干行,把它们与b.txt中的数字进行比对,有几例相同的就放在相应的文件中,这样就可得到我想要的分类文档;如果1个列都没有相同的,就保存到0.txt中,我用手工分了一下类如下所示;



0.txt
  1. 16 17 18 19 20 21
  2. 17 18 19 20 21 22
  3. 18 19 20 21 22 23
  4. 19 20 21 22 23 24
  5. 20 21 22 23 24 25
  6. 21 22 23 24 25 26
  7. 22 23 24 25 26 27
  8. 23 24 25 26 27 28
  9. 30 31 32 33 34 35
  10. 31 32 33 34 35 36
  11. 32 33 34 35 36 37
  12. 33 34 35 36 37 38
  13. 34 35 36 37 38 39
  14. 35 36 37 38 39 40
  15. 36 37 38 39 40 41
  16. 37 38 39 40 41 42
  17. 38 39 40 41 42 43
  18. 39 40 41 42 43 44
  19. 40 41 42 43 44 45
  20. 41 42 43 44 45 46
  21. 48 49 50 51 52 53
  22. 49 50 51 52 53 54
  23. 50 51 52 53 54 55
  24. 51 52 53 54 55 56
  25. 52 53 54 55 56 57
  26. 53 54 55 56 57 58
  27. 54 55 56 57 58 59
  28. 55 56 57 58 59 60
  29. 56 57 58 59 60 61
  30. 57 58 59 60 61 62
  31. 64 65 66 67 68 69
  32. 65 66 67 68 69 70
  33. 66 67 68 69 70 71
  34. 67 68 69 70 71 72
  35. 68 69 70 71 72 73
  36. 69 70 71 72 73 74
  37. 76 77 78 79 80 81
  38. 77 78 79 80 81 82
  39. 86 87 88 89 90 91
复制代码

1.txt

  1. 14 15 16 17 18 19
  2. 15 16 17 18 19 20
  3. 24 25 26 27 28 29
  4. 25 26 27 28 29 30
  5. 26 27 28 29 30 31
  6. 27 28 29 30 31 32
  7. 28 29 30 31 32 33
  8. 29 30 31 32 33 34
  9. 42 43 44 45 46 47
  10. 43 44 45 46 47 48
  11. 44 45 46 47 48 49
  12. 45 46 47 48 49 50
  13. 46 47 48 49 50 51
  14. 47 48 49 50 51 52
  15. 58 59 60 61 62 63
  16. 59 60 61 62 63 64
  17. 60 61 62 63 64 65
  18. 61 62 63 64 65 66
  19. 62 63 64 65 66 67
  20. 63 64 65 66 67 68
  21. 74 75 76 77 78 79
  22. 75 76 77 78 79 80
  23. 70 71 72 73 74 75
  24. 71 72 73 74 75 76
  25. 72 73 74 75 76 77
  26. 73 74 75 76 77 78
  27. 78 79 80 81 82 83
  28. 79 80 81 82 83 84
  29. 84 85 86 87 88 89
  30. 85 86 87 88 89 90
  31. 87 88 89 90 91 92
  32. 88 89 90 91 92 93
  33. 89 90 91 92 93 94
  34. 90 91 92 93 94 95
  35. 91 92 93 94 95 96
  36. 93 94 95 96 97 98
  37. 94 95 96 97 98 99
复制代码

2.txt

  1. 02 03 04 05 06 07
  2. 03 04 05 06 07 08
  3. 04 05 06 07 08 09
  4. 06 07 08 09 10 11
  5. 07 08 09 10 11 12
  6. 09 10 11 12 13 14
  7. 11 12 13 14 15 16
  8. 12 13 14 15 16 17
  9. 13 14 15 16 17 18
  10. 80 81 82 83 84 85
  11. 81 82 83 84 85 86
  12. 82 83 84 85 86 87
  13. 83 84 85 86 87 88
  14. 92 93 94 95 96 97
复制代码

3.txt

  1. 01 02 03 04 05 06
  2. 05 06 07 08 09 10
  3. 08 09 10 11 12 13
  4. 10 11 12 13 14 15
复制代码

.
.
.

麻烦你得闲时再看一下,谢谢!


论坛徽章:
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
发表于 2016-12-30 22:43 |显示全部楼层
本帖最后由 sunzhiguolu 于 2016-12-30 23:06 编辑

回复 9# hkldd
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my %hKeys = map {$_ => 1} qw /01 02 05 08 10 13 15 29 47 63 75 83 85 92 97/;
  5. my %hData = ();

  6. while (<>){
  7.     my $k = grep {$hKeys{$_}} split;
  8.     push (@{$hData{$k}}, $_);
  9. }

  10. for (sort {$a <=> $b} keys %hData){
  11.     print "$_.txt\n", @{$hData{$_}}, "\n";
  12. }
复制代码


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP