免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5525 | 回复: 55

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

论坛徽章:
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
发表于 2016-12-26 22:14 |显示全部楼层
本帖最后由 Windows19 于 2016-12-27 11:46 编辑

大家好   请帮忙计算不同类型字符串出现次数
a文件:
kkwrhuhej0rfgr[g'e]r5686811553354534651561562252555454554[tgjreigk
jdbgeklrjhge78y/'\]r'\5686811553354534651561562252555454554]'g/e]r\t'kt5g']e\t[4]yg.;'vf
'/\'re \e\rglljker er\ l;gy\e'ghke]\['5;l4yhgl\rt'h 578987456516516516564654465654tlhgtrlhg
236587987964556112312365656546335746515 '/t\hytr'htmrkhlt;hbjntrklgj
mfgre'tet;\t'tg,er\a'g;.e'r;g ergergermg  236587987964556112312365656546335746515 hrthrth\/h/rt\h
grjengle43klhtgnldgd;g\';w\wf   gh hllktgregKHGKJHGKgkigkbKGKF578987456516516516564654465654
gffdjkgblhnlk5686811553354534651561562252555454554dfgvdfgvdfg
/'\;.;''\.\. \/'.\.''\3156855556887945655564\';\.;\'./\
DFGVGf578987456516516516564654465654SDGFDGGGGGGGGG

fesr-jklhsgherl35t4jgferg645er8te4t68t45e46t4eg57898745651651646564rger63465566
/'\ergre'g\retg;retg;e[p'4ktgmef'g236587987964556112
grg4354tgveknrgler]\t';34\tfe651561562252555454554
ftdgerertr36tglkjver;tgk;46gl;mvf98796455611231236565gfdgdg

29058036y3442-56y8352fbwekryewkhgfbsiklkeyfg>=5ttgrkeltgjrekt73408tgre
sdfmslfmkwo340ifmks'/.'we.fds'.f'ws.fwf/'\./\sjfhiuesrtewtfrhfkjsyf/'\\/\
2325252452452543 22424<skjbfistewgfbsfilsefuslufhuwrefgv8932 4723985
32478230752398 skldfnisyrgewfbsdlfewofgksflisfygcb ';.....\;.
sjfhiuesrtewtfrhfkjsyf  '\/EWR/\W'/REF
FEW\'2/35RF\SF skjbfistewgfbsfilsefuslufhuwrefgv
\\453TERT34\3RT0skldfnisyrgewfbsdlfewofgksflisfygcb

];'\';GCF68KJGBJKL;\';JKLL'\\n/sjfhiuesrtewtfrhfk
skjbfistewgfbsfilsefu];'\';GCF68KJGBJKL;\';J
vh678yiuh88679skldfnisyrgewfbsdlfewofgks/'\/'\
jkhl. lili fbwekryewkhgfbsiklk980
ff3\23\rd 32rr\'fbwekryewkhgfbsiklkeyfg\'we236587987964556112312365656546335746515r
'/\w'r234rf'\sjfhiuesrtewtfrhfkjsyf/'\/3156855556887945655564sfds

2544325';\';fbwekryewkhgfbsiklkeyfg435sjfhiuesrtewtfrhfkjsyf
]'f/]ew;'532]3156855556887945655564sfesfs578987456516516516564654465654

ewfkwekr2w34per315685555688794565556\/@fbwekryewkhgfbsiklkeyf
ewfkwekr2w34per4fbwekryewkhgfbsiklkey\/@315685555688794565556

b文件:   都是 字母串  数字串 区分开的行
3156855556887945655564
578987456516516516564654465654
236587987964556112312365656546335746515
5686811553354534651561562252555454554
000000000000000000000

fbwekryewkhgfbsiklkeyfg
sjfhiuesrtewtfrhfkjsyf
skjbfistewgfbsfilsefuslufhuwrefgv
skldfnisyrgewfbsdlfewofgksflisfygcb
wDSTKELTHRGVSLkajlfesrhgerlkFfF
wwwwwwwwwwww

精确匹配查找出b内各类型字符串行在a内总共出现了多少次 计算b内各类型字符串在a内行出现多少次   (即计算不同类型字符串出现次数)
第1需求应得结果
字母串 10次       各位不好意思 10次才对 原来人工点到11次是错误的  已改正

数字串 12次

还有一个  也是精确匹配查找在b文件内这2种不同类型字符串在a文件内在同一行出现不同类型字符串次数

出现单种类型字符串不算(例如在同一行出现都是数字字符串不作记录,都是字母字符串也是如此不作记录)在同一行出现b内不同类型字符串类型才作记录

第2需求应得结果
总共 2次

这2次是这样的行  都是在b内不同类型在a内同一行出现的
不同类型字符串类型在同一行同时出现 才得到2次应得结果
ff3\23\rd 32rr\'fbwekryewkhgfbsiklkeyfg\'we236587987964556112312365656546335746515r
'/\w'r234rf'\sjfhiuesrtewtfrhfkjsyf/'\/3156855556887945655564sfds

谢谢大家



论坛徽章:
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
发表于 2016-12-27 09:43 |显示全部楼层
也可以看成b文件都是数字串 用 [0-9]表达   下次需要计算字母串时可改成[a-z]也行的
b
3156855556887945655564
578987456516516516564654465654
236587987964556112312365656546335746515
5686811553354534651561562252555454554
000000000000000000000

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
发表于 2016-12-27 09:57 |显示全部楼层
回复 2# Windows19
]'f/]ew;'532]3156855556887945655564sfesfs578987456516516516564654465654  

这个同事匹配3156855556887945655564和578987456516516516564654465654 这个怎么算?

论坛徽章:
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
发表于 2016-12-27 10:16 |显示全部楼层
zxy877298415 发表于 2016-12-27 09:57
回复 2# Windows19
]'f/]ew;'532]3156855556887945655564sfesfs578987456516516516564654465 ...


您好 这个只能算入第1需求
不入第2个需求  因为同一行匹配到的都是数字串

论坛徽章:
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
发表于 2016-12-27 10:40 |显示全部楼层

问:
1.每一行中的字母串和数字串最多只能出现一次吗? 有重复的情况吗? 如, /'\;.;''\.\. \/'.\.''\3156855556887945655564\';\.;\'./\3156855556887945655564\';\.;\'./\
2.字母串和数字串同时出现时 位置是固定的吗? 如, 字母串在左边 数字串在右边?

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
发表于 2016-12-27 10:42 |显示全部楼层
本帖最后由 cao627 于 2016-12-27 10:47 编辑

czj@sun:/tmp$ a=`grep -P '^[0-9]+$' b.txt | tr '\n' '|'`
czj@sun:/tmp$ b=`grep -P '^[a-zA-Z]+$' b.txt | tr '\n' '|'`
czj@sun:/tmp$ grep -P "${a%|}" a.txt | wc -l
12
czj@sun:/tmp$ grep -P "${b%|}" a.txt |wc -l
10
czj@sun:/tmp$ grep -P "${a%|}" a.txt |grep -P "${b%|}" |  wc -l
2


两个同类型数据在同一行匹配,记一次

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
发表于 2016-12-27 10:50 |显示全部楼层
3156855556887945655564
578987456516516516564654465654
236587987964556112312365656546335746515
5686811553354534651561562252555454554
000000000000000000000

fbwekryewkhgfbsiklkeyfg
sjfhiuesrtewtfrhfkjsyf
skjbfistewgfbsfilsefuslufhuwrefgv
skldfnisyrgewfbsdlfewofgksflisfygcb
wDSTKELTHRGVSLkajlfesrhgerlkFfF
wwwwwwwwwwww

ewfkwekr2w34per315685555688794565556\/@fbwekryewkhgfbsiklkeyf


还有如上,怎么能算匹配?

论坛徽章:
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
发表于 2016-12-27 11:04 |显示全部楼层
moperyblue 发表于 2016-12-27 10:40
问:
1.每一行中的字母串和数字串最多只能出现一次吗? 有重复的情况吗? 如, /'\;.;''\.\. \/'.\.''\31568 ...

你好
1.第2种需求是字母串和数字串在同一行都各同时出现一次就记录 如果单字母串在同一行出现2次不记录 数字串如果也是同一行出现2次不记录
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
发表于 2016-12-27 11:09 |显示全部楼层
本帖最后由 Windows19 于 2016-12-27 11:15 编辑
cao627 发表于 2016-12-27 10:50
3156855556887945655564
578987456516516516564654465654
236587987964556112312365656546335746515

回7楼问题
3156855556887945655564
578987456516516516564654465654
236587987964556112312365656546335746515
5686811553354534651561562252555454554
000000000000000000000

fbwekryewkhgfbsiklkeyfg
sjfhiuesrtewtfrhfkjsyf
skjbfistewgfbsfilsefuslufhuwrefgv
skldfnisyrgewfbsdlfewofgksflisfygcb
wDSTKELTHRGVSLkajlfesrhgerlkFfF
wwwwwwwwwwww

ewfkwekr2w34per315685555688794565556\/@fbwekryewkhgfbsiklkeyf



你好 这个数字串是精确匹配到了了 应记录数字串1次

但这字母串不能精确匹配到 少了1个g字母 应不作记录入子母串


ewfkwekr2w34per315685555688794565556\/@fbwekryewkhgfbsiklkeyf



论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
发表于 2016-12-27 11:12 |显示全部楼层
回复 1# Windows19


awk '!/^ $/&&FNR==NR{if($0~/[0-9]/) a[$0];else b[$0];next}{for(i in a) {if(gsub(i,"&",$0)) {if(!p[$0]) {c++;p[$0]=1;n[$0]++}}}for(i in b) {if(gsub(i,"&",$0)) {if(!q[$0]) {d++;q[$0]=1;n[$0]++}}};}END{print "shuzi:"c"\nzifu:"d;for(i in n) {if(n==2) s++}print "sum:"s}' b a        
shuzi:12
zifu:10
sum:2
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP