Board logo

标题: [文本处理] 批处理如何批量删除纯文字的那行那行? [打印本页]

作者: Rasm    时间: 2017-9-9 16:16     标题: 批处理如何批量删除纯文字的那行那行?

小弟最近遇到一个项目,需要把全中文字符存在的那行全部删除到,
  考虑到数据比较多【10多万条】,所以想用批处理尝试下
目的就是想获取到每行里面的联系方式,要获取内容那行肯定存在数字,有些是微信,就是字母+数字
    如果全部是中文的话,那行肯定就不存在联系方式了,可删除。


正文内容如下:
  1. 顶到300楼 太棒-----
  2. 不得不顶啊!-----
  3. 很好啊,-----
  4. 很牛逼啊~~~~~~~~~-----
  5. 好精彩,非常的喜欢,楼主再继续发!-----
  6. 发我邮箱1307044qq,-----
  7. 真的真的不错-----
  8. 我的QQ5774890-----
  9. 祝福你们,记得来浙江,我接待你们-----
复制代码
想得到的结果:
  1. 发我邮箱1307044qq,-----
  2. 我的QQ5774890-----
复制代码

作者: 3518228042    时间: 2017-9-9 19:25

本帖最后由 3518228042 于 2017-9-9 21:38 编辑

这个是替换,提示不是有300楼?有可能无聊的发无限个数字英文和符号
  1. @set @n=0;/* & echo off
  2. dir /b *.txt|cscript -nologo -e:jscript "%~0" ""
  3. exit/b & rem */
  4. arg = WScript.Arguments(0);
  5. fso = new ActiveXObject("Scripting.FileSystemObject");
  6. while (!WSH.StdIn.AtEndOfStream) {
  7.     f = WSH.StdIn.ReadLine();
  8.     txt = fso.OpenTextFile(f,1).ReadAll()
  9.     .replace(/[\u4E00-\u9FA5][\d]{1,4}[\u4E00-\u9FA5][^\d]{5,}\r\n/g,"")
  10.     .replace(/(?:^|\r?\n)+([^a-z\d]+)[\r\n]+/img,"\r\n");
  11.     fso.OpenTextFile(f,2).Write(txt);
  12. }
复制代码
这个提取看看,不能完全确认所需
  1. //&cls&(type *.txt|cscript -nologo -e:jscript "%~0") 2>nul>>"批量提取%.log"&pause&exit
  2. WSH.echo(WScript.StdIn.ReadAll().replace(/[\u4E00-\u9FA5][\d]{1,4}[\u4E00-\u9FA5][^\d]{5,}\r\n/g,"").match(/.*(QQ|微信|邮箱)?.*(.+@)?([a-z\d+\.]+).*/ig).join('\r\n'))
复制代码

作者: slore    时间: 2017-9-9 20:12

  1. findstr "[0123456789]" abc.txt
复制代码

作者: 523066680    时间: 2017-9-10 19:24

回复 3# slore


上次访问: 2012-1-20 15:11
最后发表: 昨天 20:12

难得…… 可以加下qq吗。1091993445
作者: happy886rr    时间: 2017-9-10 20:07

回复 4# 523066680
哈哈,其实老人家都还在,应该是刚找到密码吧。
作者: Rasm    时间: 2017-9-11 22:07

回复 3# slore


     这个简答明了,棒!

就是楼上所说,有些是遇到顶上300楼,200楼的

能否过滤掉5位纯数字以下的内容
作者: Batcher    时间: 2017-9-11 22:11

回复 6# Rasm
  1. findstr "[0123456789][0123456789][0123456789][0123456789][0123456789]" abc.txt
复制代码

作者: Rasm    时间: 2017-9-11 22:11

回复 2# 3518228042


    findstr "[0123456789]" abc.txt

这段代码简单明了,就是要再加一段 过滤掉5位以后纯数字的方法,就更好了

不知道怎么写
作者: Rasm    时间: 2017-9-11 22:17

回复 7# Batcher


    老大,这段无效果啊
作者: Batcher    时间: 2017-9-11 22:55

回复 9# Rasm


可能是我们的测试环境不一样

D:\Test>type abc.txt
顶到300楼 太棒-----
不得不顶啊!-----
很好啊,-----
很牛逼啊~~~~~~~~~-----
好精彩,非常的喜欢,楼主再继续发!-----
发我邮箱1307044qq,-----
真的真的不错-----
我的QQ5774890-----
祝福你们,记得来浙江,我接待你们-----

D:\Test>findstr "[0123456789][0123456789][0123456789][0123456789][0123456789]" abc.txt
发我邮箱1307044qq,-----
我的QQ5774890-----
作者: 3518228042    时间: 2017-9-12 06:47

  1. 顶到300楼 太棒-----
  2. 不得不顶啊!-----
  3. 很好啊,-----
  4. 很牛逼啊~~~~~~~~~-----
  5. 好精彩,非常的喜欢,楼主再继续发!-----
  6. 发我邮箱1307044qq,-----
  7. 真的真的不错-----
  8. 我的QQ5774890-----
  9. 祝福你们,记得来浙江,我接待你们-----
  10. 我的邮箱mayun1xxx@163.com
  11. mayun10xxx@163.com
  12. mayun100xxx@163.com哦
复制代码
  1. @CD /D "%~dp0"
  2. @findstr /i "[a-z0-9]*[@a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]" 文本.txt >取出内容.txt
  3. @pause
复制代码

作者: slore    时间: 2017-9-12 18:42

回复 4# 523066680


    密码倒是没忘,不过批处理毕竟还是语法和功能有限,用其他语言很容易就没用批处理了,选择合适的东西代码,可以多种混到一起能解决问题,自己省事挺好的.
所以慢慢的也没再上论坛了.批处理,for,set加变量延时搞清楚了就没啥学习了.

无意间搜索个东西,有批处理之家的链接,就登陆看看了.




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