免费注册 查看新帖 |

Chinaunix

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

[文本处理] 请帮助!a与b文档对比后,按b文档顺序重新排序 [复制链接]

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
发表于 2017-09-14 14:43 |显示全部楼层
本帖最后由 bmne 于 2017-09-15 14:22 编辑



请大牛帮帮我

a.txt已经用sort -u file刚刚处理完
b.txt中包含a.txt的全部内容,但,排序位置不同。

a.txt文档大小是 40GB
b.txt文档大小是 80GB

a.txt与b.txt文件格式相同

我的问题:
将a文档按照b文档中的顺序进行排序

大牛肯定明白我的另一个意思,就是效率。不多解释


帮帮我好吗?谢谢大牛出手!辛苦了

最近大牛来的少,但愿我运气好,让我遇到。等待中

编辑一下:
应大牛的要求(我不好意思中),举例,共参考

a.txt
  1. ..123gyt
  2. 0123
  3. 23gyDS456789
  4. 4656vgr432
  5. abcdef
  6. hfr--67we
复制代码


b.txt
  1. 76vdrm
  2. hfr--67we
  3. GFDhuv
  4. 4656vgr432
  5. 876//43||
  6. 0123
  7. 732..964
  8. vgt\\782
  9. xaijt
  10. ..123gyt
  11. aaaaaaaaaaaaaabbbb
  12. abcdef
  13. 74521856243
  14. crsza.ftc.538..htx
  15. 23gyDS456789
复制代码



输出结果
  1. hfr--67we
  2. 4656vgr432
  3. 0123
  4. ..123gyt
  5. abcdef
  6. 23gyDS456789
复制代码















论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期: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未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2017-09-14 15:12 |显示全部楼层
回复 1# bmne

孩子你的货(文档)那么多
但仓库(内存)不够啊....

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
发表于 2017-09-14 15:29 |显示全部楼层
回复 2# jason680


大牛来了。谢谢回复
知道你有很多办法的。但,我不敢奢望,因你太忙了



论坛徽章:
24
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-03 16:56:4615-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:1915-16赛季CBA联赛之深圳
日期:2018-06-15 14:59:37
发表于 2017-09-14 16:42 |显示全部楼层
回复 1# bmne

这个题目涉及的效率问题建议从硬件角度考虑,代码实现逻辑毕竟要遍历2个文档。
  1. awk 'FILENAME==ARGV[1]{a[$0]++;next}{if(a[$0]){print}}' a.txt b.txt
复制代码

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
发表于 2017-09-14 18:25 |显示全部楼层
回复 4# wh7211


谢谢帮助

肯定有大牛有办法。只是人家忙,没时间出手。



论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
发表于 2017-09-15 10:32 |显示全部楼层


各位大牛

牺牲时间,也换不回来能够运行吗?

比如用时8个小时


论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
发表于 2017-09-15 12:10 |显示全部楼层
回复 1# bmne

给些sample

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
发表于 2017-09-15 13:15 |显示全部楼层
回复 7# yinyuemi



好的

谢谢,谢谢,谢谢


论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
发表于 2017-09-15 13:38 |显示全部楼层
回复 7# yinyuemi


给您添麻烦了。

a.txt
..123gyt
0123
23gyDS456789
4656vgr432
abcdef
hfr--67we

b.txt
76vdrm
hfr--67we
GFDhuv
4656vgr432
876//43||
0123
732..964
vgt\\782
xaijt
..123gyt
aaaaaaaaaaaaaabbbb
abcdef
74521856243
crsza.ftc.538..htx
23gyDS456789


输出结果
hfr--67we
4656vgr432
0123
..123gyt
abcdef
23gyDS456789






论坛徽章:
2
2016科比退役纪念章
日期:2017-09-30 10:47:3315-16赛季CBA联赛之福建
日期:2017-10-13 09:46:21
发表于 2017-09-19 15:39 |显示全部楼层
回复 1# bmne

个人建议楼主先试试4楼的方法,跑一下先,看看时间满足要求否?
如果不行,可以考虑导入数据库的方法,文件a.txt导入到表A(id, a),id列对应在a.txt中的行号,a列就是a.txt的内容;文件b.txt导入到表B(id,b),
select B.b  from A, B where A.a=B.b order by B.id asc;

结果再导出到文件c.txt中,就是按b.txt排序的原来a.txt。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP