Board logo

标题: [文本处理] [已解决]批处理如何提取大文件文本指定文本? [打印本页]

作者: daohe    时间: 2012-1-11 15:13     标题: [已解决]批处理如何提取大文件文本指定文本?

本帖最后由 daohe 于 2012-1-12 23:47 编辑

一个txt文本,几百万行,目的是为了提取下面文档的邮箱,然后保存到指定文本文档
每一行内容如下:
dfhmail # XXXxxx # dfhmail@tom.com
yxinlai # xxxxxxxx # yxinlai@gmail.com
bauga # xxx  # abc@qq.com
12sdfs # xxxxx  # abc@163.com
yxinlai # xxxxxxxx # abcdef@gmail.com
(xxx内容包含字母,数字,空格,符号等)

指定一个字符串 @gmail.com,@163.com,@qq.com等(可以自行添加),提取 第二个#号后面的邮箱,储存与对应的文本文档,
比如gmail.com.txt,163.com.txt,qq.com.txt,内容分别是:
gmail.com.txt
yxinlai@gmail.com
abcdef@gmail.com
----
163.com.txt
abc@163.com
-----
qq.com.txt
abc@qq.com
---

请考虑文本行数,数量巨大(几百万行),需要执行高效率。
作者: ivor    时间: 2012-1-11 15:28

  1. @echo off
  2. for /f "tokens=1-3 delims=#" %%i in (a.txt) do (
  3. echo %%i # %%j # %%k >> %%k.txt
  4. )
复制代码

作者: daohe    时间: 2012-1-11 16:11

本帖最后由 daohe 于 2012-1-11 16:24 编辑

回复 2# ivor


    谢谢,但是不是这样。我是想提取包含gmail的所有邮件全部存在gmail.com.txt里。井号#前面的字符串不要。只要保留邮箱就行。
作者: find    时间: 2012-1-11 17:19

  1. gawk -F# "{gsub(/ /,\"\",$3);split($3,a,\"@\");print a[1]\"@\"a[2] >a[2]\".txt\"}" a.txt
复制代码

作者: applba    时间: 2012-1-11 17:34

楼主不会是下载了网上泄露的密码数据库?
提取后有何用途?
作者: ivor    时间: 2012-1-11 18:03

  1. @echo off
  2. for /f "tokens=1-3 delims=#" %%i in (a.txt) do (
  3. for /f "tokens=1,2 delims=@" %%a in ("%%k") do (
  4. echo %%a@%%b >> %%b.txt
  5. )
  6. )
  7. pause
复制代码
这样可以吗?,如果不行等我吃完饭再说

回复 3# daohe
作者: daohe    时间: 2012-1-12 23:36

回复 5# applba

恩。下载了整理,分析数据用。
作者: daohe    时间: 2012-1-12 23:47

感谢各位。已经解决
作者: CrLf    时间: 2012-1-13 00:04

最近各种泄露,邮箱算是比较敏感的话题,建议询问者若有咨询此类问题,先说明用途,而答题者也最好确认对方有正常用途再作回答。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2