忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
123下一页
最近访问板块 发新帖
查看: 2616 | 回复: 24

想不到题目这么难 改变一下需求 [复制链接]

论坛徽章:
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-07-01 15:27 |显示全部楼层
本帖最后由 Windows19 于 2017-07-01 15:40 编辑

想不到题目这么难  改变一下需求
实在不敢到c++版去了  那里实在太荒凉了  那里环境恐怖  阴森森的   还经常有熊出没

还是perl  shell 版块和谐   而且版主也很有精神  实在应该要赞一下人家了了

进入正题了
100g  log  效率  性能

a.txt
4gfgdg\[8654
45345btgtfdfddgggd
/[][ry4353453466434534rtyt/yr'
234235346465'/\.h\'rt;'uy6r\'y7;
gfgdg9687110575448
btgtfdfddgggd\';btgtfdfddgggd
4353453466434534.,/'4353453466434534/'ryrtytryrtlyphft''/
btgtfdfddgggd\';btgtfdfddgggd8654

'\kji']\;\lknokjp8
8u90ulknouh07kno078onk
/[][ry4353453466434534789rtyt/yr'
4gfgdgab\[8654243
已经有1个B文本  需要把这些有关键字行取出来  而b文件大小仅5m左右  没有关键字的可以不输出

精确匹配b文本中关键字     后输出          代码改为精确匹配b文本中字母时  应区分大小写

例如b.txt    全是数字串

4353453466434534
234235346465
8654
9687110575448
6789679869797897897879


示例中颜色匹配关键子
大概应得结果,  log.txt

/[][ry4353453466434534rtyt/yr'
gfgdg9687110575448
4353453466434534.,/'4353453466434534/'ryrtytryrtlyphft''/
btgtfdfddgggd\';btgtfdfddgggd8654



用这个出来结果很正确  但很气内存   搞不动100g
awk 'BEGIN{FPAT="[0-9]+"}NR==FNR{a[$1]=1;next}NF{f=1;for(i=1;i<=NF;i++)f=f&&a[$i];if(f)print}'


谢谢...



论坛徽章:
5
子鼠
日期:2014-10-11 16:46:482015亚冠之萨济拖拉机
日期:2015-05-22 11:38:53黑曼巴
日期:2016-07-19 15:03:1115-16赛季CBA联赛之四川
日期:2017-05-16 16:38:5515-16赛季CBA联赛之天津
日期:2017-06-29 10:34:43
发表于 2017-07-01 19:34 |显示全部楼层
你能想到的任何用几句命令实现的,都是爆内存。
还有你的问题原来是怎样的就是怎样的,不要把问题简化,因为简化版的实现和复杂版的实现相去甚远,到头来还要从头开始 —— 差之毫厘,谬以千里。

论坛徽章:
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-07-01 20:30 |显示全部楼层
回复 2# 523066680

原来那个太复杂了   很难做得出来   但是你却写出来了  结果正确
而且你思路更灵活   比我考虑的还要全  你确实是一个解决问题能手
想牺牲一下需求  出来结果无须按顺序排了   没办法  只能改变需求了   


盼望这里前辈老师能写出来了

论坛徽章:
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-07-01 20:36 来自手机 |显示全部楼层
本帖最后由 Windows19 于 2017-07-01 20:37 编辑

如果上面需求能在1-2小时能完成,实在已经很满意了,

当然3小时左右也行

论坛徽章:
5
子鼠
日期:2014-10-11 16:46:482015亚冠之萨济拖拉机
日期:2015-05-22 11:38:53黑曼巴
日期:2016-07-19 15:03:1115-16赛季CBA联赛之四川
日期:2017-05-16 16:38:5515-16赛季CBA联赛之天津
日期:2017-06-29 10:34:43
发表于 2017-07-01 21:36 |显示全部楼层
你现在这个需求就简单多了。特别是B.txt 如果确实只有5M。那么A.txt 大点无所谓。
我还在想上次那个问题怎么优化。这个问题略过

论坛徽章:
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-07-01 21:53 来自手机 |显示全部楼层
523066680 发表于 2017-07-01 21:36
你现在这个需求就简单多了。特别是B.txt 如果确实只有5M。那么A.txt 大点无所谓。
我还在想上次那个问题怎 ...

确实B文件5m左右

上次那个问题太复杂了  
能优化效率固然你是最好,而且能写出比c++更厉害

我突然想到上次那个问题可以这样优化
从每一行中,取重复率最高1个字母串,和最高1个数字串(每行都是取这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
发表于 2017-07-01 22:57 来自手机 |显示全部楼层
523066680 发表于 2017-07-01 21:36
你现在这个需求就简单多了。特别是B.txt 如果确实只有5M。那么A.txt 大点无所谓。
我还在想上次那个问题怎 ...

相信你是可以  也看到老师你将Perl写得精僻

现在大家都知道了这个题目,各路前辈大神关注度也非常高,

论坛徽章:
112
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2017-07-02 14:13 |显示全部楼层
$ awk -f get_engnum.awk b.txt a.txt
4gfgdg\[8654
/[][ry4353453466434534rtyt/yr'
234235346465'/\.h\'rt;'uy6r\'y7;
gfgdg9687110575448
4353453466434534.,/'4353453466434534/'ryrtytryrtlyphft''/
btgtfdfddgggd\';btgtfdfddgggd8654

评分

参与人数 1信誉积分 +10 收起 理由
Windows19 + 10 谢谢前辈一直帮助

查看全部评分

1人打赏

论坛徽章:
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-07-02 14:53 |显示全部楼层
回复 8# jason680
不知道为啥  我这边返回这个信息
$ awk -f get_engnum.awk b.txt a.txt >0
awk: fatal: can't open source file `get_engnum.awk' for reading (No such file or directory)

论坛徽章:
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-07-02 15:51 |显示全部楼层
jason680 发表于 2017-07-02 14:13
$ awk -f get_engnum.awk b.txt a.txt
4gfgdg\[8654
/[][ry4353453466434534rtyt/yr'

没见过这样写法呀                  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP