免费注册 查看新帖 |

Chinaunix

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

[文本处理] 按字符串排序 (有样本 有结果) [复制链接]

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
发表于 2017-06-20 22:14 |显示全部楼层
本帖最后由 Windows19 于 2017-06-26 21:23 编辑

1楼是简单表述  在8楼有正文深度需求表述


那个贴子可能说得过于复杂,很多看不懂    所以我重新整理一下需求  用更简单描述方式

统计最多字符串进行重新排序
A.txt

a1
b2
1a
d3
a1a
7c
2a0
5b
c9
6b6


分2种统计类型  1种统计字母串   1种统计数字串  ,如果同时判断这2种条件类型, 可能会存在某种判断冲突  还是写统计一种类型吧,

1, 如果按字母串统计^[a-zA-Z]  其特征 a是文本内出现5次  b出现3次  c出现2次  d出现1次  所以得从多到小排序


2, 如果按数字串统计^[0-9]  其特征  1是文本内出现3次  2出现2次  6出现2次  5出现1次  9出现1次 7出现1次 3出现1次


如果按字母串统计, 出来后大概应该是这样排  

a1
1a
a1a
2a0
b2
5b
6b6
c9
7c
d3

谢谢

论坛徽章:
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
发表于 2017-06-21 00:48 |显示全部楼层
这个问题能正确求解并且能保持效率的人一定是大牛,Perl 版的 rubyish 应该没有问题。此人功力上乘,水平应该没有几人能敌。
开悬赏吧。。。。

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
发表于 2017-06-21 09:01 |显示全部楼层
回复 2# sunzhiguolu

嗯嗯,还是有很多能人的。
但貌似最近很多人没时间上来了,冷清了很多





论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
发表于 2017-06-21 11:08 |显示全部楼层
回复 2# sunzhiguolu

老师你的perl也写得炉火纯青的,先来一个吧

论坛徽章:
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
发表于 2017-06-21 13:12 |显示全部楼层
回复 4# Windows19
你去 Perl 版开悬赏贴吧,这里估计费劲吧。
不是 Shell 板块没有能人,主要是能人这两天肠胃不舒服,休假中。。。

论坛徽章:
0
发表于 2017-06-26 13:17 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
发表于 2017-06-26 17:06 来自手机 |显示全部楼层
本友会机友会摄友会 发表于 2017-06-26 13:17
1 看题我头疼。
1.1 一定有人和我一样有疑问,2a0按数字排序的问题。
1.2 楼主的目的是,分组,统计,为 ...

谢谢
详细可移步到c++版区看贴,那里有详细注明,及结果

看着写就行
poweshell只会一点点,也装有mysql数据库

如果可以,我也愿意尝试一下

那个贴让人搞事情了,方便的话,代码可在这回复就算了


论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
发表于 2017-06-26 21:19 |显示全部楼层
本帖最后由 Windows19 于 2017-06-27 10:01 编辑

回复 6# 本友会机友会摄友会

这样的:   处理100g文本    2G内存  效率也是关键
将文本里面数据用精确匹配方式   统计出字母串 数字串 重复次数  然后从多到少排序 整行打印出来

下面是测试文本   要精确匹配  字母串 数字串 计数 有颜色那些为代表字母串 数字串    例如其中这2行

kmerw/'\35/trt
;\';3K452;LRNJKJlk35h42hrh6876788768796564743drgdsgrdg



每行的关键字在全文中出现的次数统计(单行内出现相同字符串多次的 计为一次)  如果有多少算多少也可以   
  
a.txt
  1.                                                 
  2.                 .mllm;ml;k'\;.\\;t.\t
  3.         ,tge,gery,g        ,y; le        
  4.         JHBBJHHBJBHJ
  5.         lhkfnereef345E'\43\E RTY
  6.                                        
  7.                                         a        a        a        a        aa        a        a        a        a        
  8.                                         ertfertgfe
  9.                              
  10.                               
  11.         56345
  12.       34435435
  13.      lhkfnereef/'34'534'\TRER\DR
  14.     RGHRERGY
  15.    34543543
  16.    a a a a  aa
  17.    rthgrtdgyrttg
  18.   g g g g  g g g
  19. 5 5 5 5 5 5  5 5 5 5 5  5 5 5 5
  20. ,+%(?>>._{{}$##[]\\`{@@"/<&~'[])
  21. /'.\.\/;\']][lhkfnereef      
  22. /'\']'JRJLKLKWRNLK/'\.'][
  23. /'\\'/'\JRJLKLKWRNLK/''\;/'\
  24. /\']8465872/']\']
  25. /\\'\'<span style="background-color: darkorange;">kmerw</span>/\][
  26. 15458875224455
  27. 325541125553224*6321755+5085/535365/                                 
  28. 45'\/\'r\'34''\jk32lhkfnereef456435345353ert/'\35[34\5;3et'\/.we\sert
  29. 456456456kmerw464564
  30. 456456kmerw56456456
  31. 45648684 55465545455
  32. 456646464        45645646546545546
  33. 56456546<span style="background-color: darkorange;">kmerw</span>'/\4\6
  34. 6876788768796564743.';etg]4ep
  35. 6876788768796564743FDGD/\\.'..G
  36. 6876788768796564743RDNGK35\;\45;\4te\r
  37. 6876788768796564743erte'.;3p4[]]koj        k
  38. 6876788768796564743etg./er\';34]6;t.g;re
  39. <span style="background-color: red;"><span style="background-color: red;">6876788768796564743</span></span>ygtr/\'345[t;ert.;g
  40. 8465872/'\'\'/\/'
  41. :%>(()??,(+?(:%%>()?>>:%.>?())
  42. ;'l;l        LK;35JO23JRJLKLKWRNLK/''\'34\6/43erstw46546
  43. ;\';3K452;LRNJKJlk35h42hrh6876788768796564743drgdsgrdg
  44. JKLHKHKJGHYJGHUJG
  45. JRJLKLKWRNLK/\.]\[
  46. dgytrhhjuuyttfgghh
  47. hkjhbkhKJHKJHKJjhJjJjJ
  48. hkkkhkhkjkhjhgkk

  49. kmerw/'\35/trt
  50. kmerw45';3\][5435
  51. kmerw462444'4]6[4433
  52. kmerw76545
  53. lhkfnereef        
  54. lhkfnereef/'\76\FH TY\        UTR76  T67U567H
  55. lhkfnereefyftyu/'\J        TUYRT75,76 ER6UY  5;7;RDT;\467        
  56. vhgghhuhhj fggg.n
  57. w,er;lwekjhy4u2hkewhrft8465872poio        LKJLuhu432r456dsy'
复制代码
正确结果  (统计出字母串 数字串 重复次1次   可以随意排序位置)


出来后的 应该是这样排序
log.txt
  1. kmerw462444'4]6[4433
  2. 56456546kmerw'/\4\6
  3. kmerw/'\35/trt
  4. kmerw45';3\][5435
  5. 456456kmerw56456456
  6. 456456456kmerw464564
  7. kmerw76545
  8. /\\'\'kmerw/\][
  9. 6876788768796564743RDNGK35\;\45;\4te\r
  10. 6876788768796564743erte'.;3p4[]]koj        k
  11. 6876788768796564743.';etg]4ep
  12. 6876788768796564743etg./er\';34]6;t.g;re
  13. ;\';3K452;LRNJKJlk35h42hrh6876788768796564743drgdsgrdg
  14. 6876788768796564743ygtr/\'345[t;ert.;g
  15. 6876788768796564743FDGD/\\.'..G
  16. 45'\/\'r\'34''\jk32lhkfnereef456435345353ert/'\35[34\5;3et'\/.we\sert
  17.      lhkfnereef/'34'534'\TRER\DR
  18. w,er;lwekjhy4u2hkewhrft8465872poio        LKJLuhu432r456dsy'
  19.         lhkfnereef345E'\43\E RTY
  20. lhkfnereef/'\76\FH TY\        UTR76  T67U567H
  21. lhkfnereef        
  22. /'.\.\/;\']][lhkfnereef      
  23. ;'l;l        LK;35JO23JRJLKLKWRNLK/''\'34\6/43erstw46546
  24. lhkfnereefyftyu/'\J        TUYRT75,76 ER6UY  5;7;RDT;\467        
  25.         ,tge,gery,g        ,y; le        
  26. JRJLKLKWRNLK/\.]\[
  27. /'\\'/'\JRJLKLKWRNLK/''\;/'\
  28. /'\']'JRJLKLKWRNLK/'\.'][
  29.   g g g g  g g g
  30.                 .mllm;ml;k'\;.\\;t.\t
  31. 8465872/'\'\'/\/'
  32. /\']8465872/']\']
  33. 5 5 5 5 5 5  5 5 5 5 5  5 5 5 5
  34.    a a a a  aa
  35.                                         a        a        a        a        aa        a        a        a        a        
  36. jd,.434;\2['lkmerw5465fghfdh
  37. 325541125553224*6321755+5085/535365/                                 
  38. vhgghhuhhj fggg.n
  39. 456646464        45645646546545546
  40. 45648684 55465545455
  41. hkkkhkhkjkhjhgkk
  42. hkjhbkhKJHKJHKJjhJjJjJ
  43. dgytrhhjuuyttfgghh
  44. JKLHKHKJGHYJGHUJG
  45. 15458875224455
  46.    rthgrtdgyrttg
  47.    34543543
  48.     RGHRERGY
  49.       34435435
  50.         56345
  51.                                         ertfertgfe
  52.         JHBBJHHBJBHJ
  53. :%>(()??,(+?(:%%>()?>>:%.>?())
  54. ,+%(?>>._{{}$##[]\\`{@@"/<&~'[])
  55.                               
  56.                              
  57.                                        
  58.                                                 
复制代码



看着写就行
poweshell只会一点点,也有mysql数据库

如果可以,我也愿意尝试一下







论坛徽章:
0
发表于 2017-06-27 14:38 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
发表于 2017-06-27 15:14 来自手机 |显示全部楼层
本友会机友会摄友会 发表于 2017-06-27 14:38
1越看越头痛,摸不到头脑。40多分钟,才看懂个大概。

2你的问题是:把大文本中的每行,分词。连续的数字 ...

全论坛都说困难,就只有你说容易做到
他们不相信的,但是我还是相信你,这么多人看着,既然你来进来回复,说明,你还是有乐于助人的品质,我也就再说清楚一点

我先回答你第二个问题,你理解的精确匹配区分大小写,是对的,但不是输出这种统计结果,

而是要将文本内统计出最高关键字行放在前面,如比类推,就会得到log.txt示例结果

其实要做的就是统计文本内相同 字母串 次数,统计文本内相同 数字串 次数
,然后根据这个统计次数频率关键字的行  从高到低打印出来


这么说能理解不?

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP