免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Windows19
打印 上一主题 下一主题

[文本处理] 计算不同字符串类型出现次数 [复制链接]

论坛徽章:
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
41 [报告]
发表于 2016-12-27 15:55 |只看该作者
回复 39# Windows19
再试下,

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my ($NS, %hKeys) = (0, ());
  5. while (<>){
  6.     next if (/\A\s*\z/);
  7.     s/\r?\n//;
  8.     if (@ARGV){
  9.         my $k = /\d/ ? 'N' : 'S';
  10.         $hKeys{$k}{$_} = 1;
  11.         next;
  12.     }
  13.     my $N = grep {$hKeys{'N'}{$_}} /\d+/g;
  14.     my $S = grep {$hKeys{'S'}{$_}} /[a-z]+/ig;
  15.     $NS++ if ($S and $N);
  16.     $hKeys{'S'}{'!C'}++ if ($S);
  17.     $hKeys{'N'}{'!C'}++ if ($N);
  18. }

  19. print join ("\n", "Num Str : $NS", "Strings : $hKeys{'S'}{'!C'}", "Numbers : $hKeys{'N'}{'!C'}", "");
复制代码



论坛徽章:
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
42 [报告]
发表于 2016-12-27 15:56 |只看该作者
moperyblue 发表于 2016-12-27 15:44
在b文件最后那个数字串下面加一行空行

将b文件内匹配到字符串输出到1个临时文件上 然后再计算这个临时文件内得到各个类型字符串 这样思路写会不会快点?

不过像是不适合第二种需求  可以先实现第一点需求的

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
43 [报告]
发表于 2016-12-27 16:00 |只看该作者
回复 42# Windows19


你是在什么环境下测试的? cygwin?

more a
  1. kkwrhuhej0rfgr[g'e]r5686811553354534651561562252555454554[tgjreigk
  2. jdbgeklrjhge78y/'\]r'\5686811553354534651561562252555454554]'g/e]r\t'kt5g']e\t[4]yg.;'vf
  3. '/\'re \e\rglljker er\ l;gy\e'ghke]\['5;l4yhgl\rt'h 578987456516516516564654465654tlhgtrlhg
  4. 236587987964556112312365656546335746515 '/t\hytr'htmrkhlt;hbjntrklgj
  5. mfgre'tet;\t'tg,er\a'g;.e'r;g ergergermg  236587987964556112312365656546335746515 hrthrth\/h/rt\h
  6. grjengle43klhtgnldgd;g\';w\wf   gh hllktgregKHGKJHGKgkigkbKGKF578987456516516516564654465654
  7. gffdjkgblhnlk5686811553354534651561562252555454554dfgvdfgvdfg
  8. /'\;.;''\.\. \/'.\.''\3156855556887945655564\';\.;\'./\
  9. DFGVGf578987456516516516564654465654SDGFDGGGGGGGGG
  10. fesr-jklhsgherl35t4jgferg645er8te4t68t45e46t4eg57898745651651646564rger63465566
  11. /'\ergre'g\retg;retg;e[p'4ktgmef'g236587987964556112
  12. grg4354tgveknrgler]\t';34\tfe651561562252555454554
  13. ftdgerertr36tglkjver;tgk;46gl;mvf98796455611231236565gfdgdg
  14. 29058036y3442-56y8352fbwekryewkhgfbsiklkeyfg>=5ttgrkeltgjrekt73408tgre
  15. sdfmslfmkwo340ifmks'/.'we.fds'.f'ws.fwf/'\./\sjfhiuesrtewtfrhfkjsyf/'\\/\
  16. 2325252452452543 22424<skjbfistewgfbsfilsefuslufhuwrefgv8932 4723985
  17. 32478230752398 skldfnisyrgewfbsdlfewofgksflisfygcb ';.....\;.
  18. sjfhiuesrtewtfrhfkjsyf  '\/EWR/\W'/REF
  19. FEW\'2/35RF\SF skjbfistewgfbsfilsefuslufhuwrefgv
  20. \\453TERT34\3RT0skldfnisyrgewfbsdlfewofgksflisfygcb
  21. ];'\';GCF68KJGBJKL;\';JKLL'\\n/sjfhiuesrtewtfrhfk
  22. skjbfistewgfbsfilsefu];'\';GCF68KJGBJKL;\';J
  23. vh678yiuh88679skldfnisyrgewfbsdlfewofgks/'\/'\
  24. jkhl. lili fbwekryewkhgfbsiklk980
  25. ff3\23\rd 32rr\'fbwekryewkhgfbsiklkeyfg\'we236587987964556112312365656546335746515r
  26. '/\w'r234rf'\sjfhiuesrtewtfrhfkjsyf/'\/3156855556887945655564sfds
  27. 2544325';\';fbwekryewkhgfbsiklkeyfg435sjfhiuesrtewtfrhfkjsyf
  28. ]'f/]ew;'532]3156855556887945655564sfesfs578987456516516516564654465654
  29. ewfkwekr2w34per315685555688794565556\/@fbwekryewkhgfbsiklkeyf
  30. ewfkwekr2w34per4fbwekryewkhgfbsiklkey\/@315685555688794565556
复制代码

more b
  1. 3156855556887945655564
  2. 578987456516516516564654465654
  3. 236587987964556112312365656546335746515
  4. 5686811553354534651561562252555454554
  5. 000000000000000000000

  6. fbwekryewkhgfbsiklkeyfg
  7. sjfhiuesrtewtfrhfkjsyf
  8. skjbfistewgfbsfilsefuslufhuwrefgv
  9. skldfnisyrgewfbsdlfewofgksflisfygcb
  10. wDSTKELTHRGVSLkajlfesrhgerlkFfF
  11. wwwwwwwwwwww
复制代码
  1. awk 'function cnt(a,p){for(i in a)if($0~i){p?c[FNR]++:c[FNR]--;break}}NR==FNR{if(!NF){f=1;next};f?b[$0]:a[$0];next}{cnt(a,1);cnt(b)}END{for(i in c)c[i]?c[i]>0?x++:y++:z++;print "数字串:"x+z RS "字母串:"y+z RS "总共:"z}' b a
  2. 数字串:12
  3. 字母串:10
  4. 总共:2
复制代码

论坛徽章:
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
44 [报告]
发表于 2016-12-27 16:02 |只看该作者
sunzhiguolu 发表于 2016-12-27 15:55
回复 39# Windows19
再试下,

测试主题是可以了  可惜不能精确匹配a文件内更复杂字符串  现在只是有针对性的写哦

论坛徽章:
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
45 [报告]
发表于 2016-12-27 16:05 |只看该作者
回复 44# Windows19
那你放开了写, a 文件内的字符串是个啥情况?

论坛徽章:
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
46 [报告]
发表于 2016-12-27 16:05 |只看该作者

是说结果对  只是1m左右慢 你测试多点数据就知道了

论坛徽章:
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
47 [报告]
发表于 2016-12-27 16:17 |只看该作者
回复 43# moperyblue

是的
cygwin

论坛徽章:
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
48 [报告]
发表于 2016-12-27 17:01 |只看该作者
sunzhiguolu 发表于 2016-12-27 15:55
回复 39# Windows19
再试下,

不好意思是我测试太大意了没同时放2种字符进b文件 你的没问题的
谢谢老师

论坛徽章:
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
49 [报告]
发表于 2016-12-27 17:02 |只看该作者
谢谢老师们  都可以

论坛徽章:
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
50 [报告]
发表于 2016-12-27 17:07 |只看该作者
本帖最后由 sunzhiguolu 于 2016-12-27 17:09 编辑

回复 48# Windows19
没同时放2种字符进b文件

能否解释下,不太明白啊?

另外,
测试主题是可以了  可惜不能精确匹配a文件内更复杂字符串  现在只是有针对性的写哦
顺便说一下?



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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP