标题: 【完结】20元求提取文本 [打印本页]
作者: lxh623 时间: 2019-4-8 10:42 标题: 【完结】20元求提取文本
本帖最后由 lxh623 于 2019-4-8 14:08 编辑
文本a有四十万行,有些行内有中文标点符号。
文本tmp有180万行,前面是中文,中间是制表符,后面是数字。
想用a的每一行去搜索tmp,精确匹配tmp制表符前面的部分,提取tmp那一行到文本b。
另外,能不能在a和tmp都是UTF-8编码的条件下运行批处理,因为ANSI码,有些字不对了。(这一条,尽量。)
谢谢!
作者: zaqmlp 时间: 2019-4-8 11:28
- @echo off
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- start mshta VBScript:Execute("msgbox(""%info%""):close")
- cd /d "%~dp0"
- set "文件1=a.txt"
- set "文件2=tmp.txt"
- set "文件3=b.txt"
- powershell ^
- $t1=@(gc '%文件1%' -enc UTF8);^
- $t2=@(gc '%文件2%' -enc UTF8);^
- $dic=New-Object 'System.Collections.Generic.Dictionary[string,string]';^
- [System.Collections.ArrayList]$arr=@();^
- for($i=0;$i -lt $t1.length;$i++){^
- if(-not $dic.ContainsKey($t1[$i].trimend())){$dic.Add($t1[$i].trimend(), '')};^
- };^
- for($i=0;$i -lt $t2.length;$i++){^
- $line=$t2[$i] -split '\t';^
- if($dic.ContainsKey($line[0])){[void]$arr.Add($t2[$i])};^
- };^
- out-file -file '%文件3%' -input ($arr -join \"`r`n\") -enc UTF8;
- pause
复制代码
作者: lxh623 时间: 2019-4-8 14:09
本帖最后由 lxh623 于 2019-4-8 14:12 编辑
突然有了自己的办法。emeditor里面排序,就可以,提取需要的行,或者删除一些行,得到符合要求的行。两步就一分为二。
excel里面删除相同项,是另外一个做法。
所以,我付了、结了,但是,没有尝试,因为批处理花时间得多。
还是谢谢!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |