[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何提取大文件文本指定文本?

本帖最后由 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
---

请考虑文本行数,数量巨大(几百万行),需要执行高效率。
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

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

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

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

回复 2# ivor


    谢谢,但是不是这样。我是想提取包含gmail的所有邮件全部存在gmail.com.txt里。井号#前面的字符串不要。只要保留邮箱就行。

TOP

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

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

楼主不会是下载了网上泄露的密码数据库?
提取后有何用途?
1

评分人数

    • CrLf: 考虑周全PB + 5

TOP

  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

TOP

回复 5# applba

恩。下载了整理,分析数据用。

TOP

感谢各位。已经解决

TOP

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

TOP

返回列表