免费注册 查看新帖 |

Chinaunix

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

[文本处理] 能不能有办法直接提取指定? [复制链接]

论坛徽章:
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-05-20 09:52 |显示全部楼层



混合后数据太大(近500GB),没招了。只好来求助

为说明白,只能啰嗦下,不好意思

一、我有文档数据(行首及中间有空格)
a.txt
  1. 1 2
  2. 3 4
  3. a b
  4. c d
  5. e f
复制代码


b.txt
  1. 1 2
  2. 3 4
  3. a b
  4. c d
  5. e f
  6. g h
复制代码


二、把a.txt b.txt混合后输出是c.txt如下
c.txt
  1. 1 2 c d
  2. 1 2 3 4
  3. 1 2 e f
  4. 1 2 a b
  5. 1 2 1 2
  6. 1 2 g h
  7. 3 4 c d
  8. 3 4 3 4
  9. 3 4 e f
  10. 3 4 a b
  11. 3 4 1 2
  12. 3 4 g h
  13. a b c d
  14. a b 3 4
  15. a b e f
  16. a b a b
  17. a b 1 2
  18. a b g h
  19. c d c d
  20. c d 3 4
  21. c d e f
  22. c d a b
  23. c d 1 2
  24. c d g h
  25. e f c d
  26. e f 3 4
  27. e f e f
  28. e f a b
  29. e f 1 2
  30. e f g h
复制代码


三、把c.txt中只提取出每一行中的不同的列中的不同字符串的行  ,  再提取出取反的数据

1、提取出c.txt中每一行中的不同的列中的不同字符串的行
d.txt
  1. 1 2 c d
  2. 1 2 3 4
  3. 1 2 e f
  4. 1 2 a b
  5. 1 2 g h
  6. 3 4 c d
  7. 3 4 e f
  8. 3 4 a b
  9. 3 4 1 2
  10. 3 4 g h
  11. a b c d
  12. a b 3 4
  13. a b e f
  14. a b 1 2
  15. a b g h
  16. c d 3 4
  17. c d e f
  18. c d a b
  19. c d 1 2
  20. c d g h
  21. e f c d
  22. e f 3 4
  23. e f a b
  24. e f 1 2
  25. e f g h
复制代码


2、提取出c.txt中上面取反(没有输出)的数据(只能这样提取)
e.txt
  1. 1 2 1 2
  2. 3 4 3 4
  3. a b a b
  4. c d c d
  5. e f e f
复制代码


四、本次求助的要求是:

    只提供上面序号 一 里面的内容(a.txt b.txt),(没有中间环节)直接输出序号 三 里面的 2 的数据e.txt




应该是能看明白。
麻烦给出命令?

谢谢!辛苦






论坛徽章:
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-05-21 11:10 |显示全部楼层

论坛徽章:
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-05-21 11:32 |显示全部楼层
本帖最后由 bmne 于 2017-05-21 11:58 编辑

回复 2# jason680

看来大牛没看明白我的意思
我实在不知道再怎样表述更明白了。
唉!我遗憾中



论坛徽章:
1
15-16赛季CBA联赛之广东
日期:2017-05-24 00:30:25
发表于 2017-05-21 11:58 |显示全部楼层
本帖最后由 cclxpp123 于 2017-05-21 12:35 编辑

如何混合后的数据为500G的话,如果两个文件大小差不多的话,大约各为700k左右;500e9=50e10=(7e5)^2;根据题目要求,我觉得可以省去中间过程,直接比较输出,用两个循环即可。
  1. echo "`cat a`" | while read x
  2. do
  3. echo "`cat b`" | while read y
  4. do
  5. if [ "$x" = "$y" ] ; then
  6. echo "$x $y" >> c
  7. else
  8. echo "$x $y" >> d
  9. fi
  10. done
  11. done
复制代码

不知道行不行

论坛徽章:
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-05-21 12:06 |显示全部楼层
本帖最后由 bmne 于 2017-05-21 12:09 编辑

回复 4# cclxpp123


大牛,我的两个a.txt=1.26MB     b.txt=1.41MB    混合后的大小(不是十分准确,大概)是:

总共 24591257856 个密码
文件大小 417554590464    4.07768e+08 k   398211 m


太大了。没法混合后再处理下一步提取指定。只能看看能否去掉中间环节,直接得到结果


论坛徽章:
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-05-21 16:43 |显示全部楼层
回复 5# bmne

stupid idea to combine two thing ...

$ awk '{while(getline a < "b.txt")print $0 a;close("b.txt")}' a.txt | awk '!($1!=$2&&$1!=$3&&$1!=$4&&$2!=$3&&$2!=$4&&$3!=$4)'
1 2 1 2
3 4 3 4
a b a b
c d c d
e f e f

论坛徽章:
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-05-21 16:56 |显示全部楼层
回复 6# jason680


谢谢,谢谢

我就知道你厉害,牛气

辛苦了

实战估计要提取10GB左右的指定数据。马上试去


论坛徽章:
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-05-21 18:34 |显示全部楼层
回复 6# jason680


已经运行了一个小时了,输出才360MB,估计总输出超过10GB。所以,不关机我运行十几个小时看看

我不敢提要求给精简命令。能运行即可


论坛徽章:
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-05-22 14:59 |显示全部楼层
回复 6# jason680


大牛,终于运行结束


real    1119m33.620s
user    1442m42.770s
sys     5m36.166s



比不能运行强。我满足



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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP