找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15357|回复: 2

【完结】20元求提取文本

  [复制链接]
发表于 2019-4-8 10:42:14 | 显示全部楼层 |阅读模式
本帖最后由 lxh623 于 2019-4-8 14:08 编辑

文本a有四十万行,有些行内有中文标点符号。
文本tmp有180万行,前面是中文,中间是制表符,后面是数字。
想用a的每一行去搜索tmp,精确匹配tmp制表符前面的部分,提取tmp那一行到文本b。

另外,能不能在a和tmp都是UTF-8编码的条件下运行批处理,因为ANSI码,有些字不对了。(这一条,尽量。)
谢谢!
发表于 2019-4-8 11:28:03 | 显示全部楼层
  1. @echo off
  2. set info=互助互利,支付宝扫码头像,感谢赞助
  3. rem 有问题,可加QQ956535081及时沟通
  4. title %info%
  5. start mshta VBScript:Execute("msgbox(""%info%""):close")
  6. cd /d "%~dp0"
  7. set "文件1=a.txt"
  8. set "文件2=tmp.txt"
  9. set "文件3=b.txt"
  10. powershell ^
  11.     $t1=@(gc '%文件1%' -enc UTF8);^
  12.     $t2=@(gc '%文件2%' -enc UTF8);^
  13.     $dic=New-Object 'System.Collections.Generic.Dictionary[string,string]';^
  14.     [System.Collections.ArrayList]$arr=@();^
  15.     for($i=0;$i -lt $t1.length;$i++){^
  16.         if(-not $dic.ContainsKey($t1[$i].trimend())){$dic.Add($t1[$i].trimend(), '')};^
  17.     };^
  18.     for($i=0;$i -lt $t2.length;$i++){^
  19.         $line=$t2[$i] -split '\t';^
  20.         if($dic.ContainsKey($line[0])){[void]$arr.Add($t2[$i])};^
  21.     };^
  22.     out-file -file '%文件3%' -input ($arr -join "`r`n") -enc UTF8;
  23. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
lxh623 + 1 谢谢!

查看全部评分

 楼主| 发表于 2019-4-8 14:09:58 | 显示全部楼层
本帖最后由 lxh623 于 2019-4-8 14:12 编辑

突然有了自己的办法。emeditor里面排序,就可以,提取需要的行,或者删除一些行,得到符合要求的行。两步就一分为二。
excel里面删除相同项,是另外一个做法。
所以,我付了、结了,但是,没有尝试,因为批处理花时间得多。

还是谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:29 , Processed in 0.010485 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表