标题: 【完结】20元求提取文本 [打印本页]
作者: lxh623 时间: 2019-12-5 15:29 标题: 【完结】20元求提取文本
本帖最后由 lxh623 于 2019-12-5 16:06 编辑
文本a每一行是2-7汉字,文本tmp是句子。
想用a的每一行搜索tmp,如果有,写入文本b。写入的内容是“搜索的词语--提取的行”。--直接是\t更好。
tmp比较大,几十M。希望高效。
谢谢!
我的代码不运行。a里面没有-。- @echo off
- for /f "tokens=1 delims=-" %%i in (a.txt) do (
- for /f "delims=" %%a in ('findstr /g:a.txt tmp.txt')
- ) do echo "%%i--%%a" >>b.txt
复制代码
作者: Batcher 时间: 2019-12-5 15:47
回复 1# lxh623 - @echo off
- (for /f %%i in ('type "a.txt"') do (
- for /f "delims=" %%a in ('findstr "%%i" tmp.txt') do (
- echo "%%i--%%a"
- )
- ))>b.txt
复制代码
作者: lxh623 时间: 2019-12-5 16:04
本帖最后由 lxh623 于 2019-12-5 16:08 编辑
群里无法发红包,怎么办。我记得以前还可以转账给您。
我进的是公众号。
已经论坛捐助20元。谢谢!
作者: Batcher 时间: 2019-12-5 16:14
回复 3# lxh623
这次我替你在微信群里发红包
请微信添加朋友:BatHome加群助手,拉你入群。
作者: WHY 时间: 2019-12-5 16:34
本帖最后由 WHY 于 2019-12-5 23:26 编辑
Test.JS
试试- var fso = new ActiveXObject('Scripting.FileSystemObject');
- var f1 = fso.OpenTextFile('a.txt', 1);
- var f2 = fso.OpenTextFile('tmp.txt', 1);
- var arr = [], map = [];
-
- while( !f1.AtEndOfStream ){
- var s = f1.ReadLine();
- if(!/^\s*$/.test(s)) map[s] = 1;
- }
-
- while( !f2.AtEndOfStream ){
- var s = f2.ReadLine();
- for(var i=2; i<=7; i++){
- for(var j=0; j<=s.length-i; j++){
- var s1 = s.substr(j,i);
- if(map[s1]) arr.push(s1 + '\t' + s);
- }
- }
- }
- fso.OpenTextFile('b.txt', 2, true).WriteLine(arr.join('\r\n'));
-
- WSH.Echo('Done')
复制代码
改一下,不用正则,回溯次数太多,效率不高。
作者: Gin_Q 时间: 2019-12-5 19:19
本帖最后由 Gin_Q 于 2019-12-5 20:17 编辑
- @echo off&title gan
- ::出现乱码请把文本另存为ANSI编码
- ::有特殊字符需要在echo后面加""
- >b.txt (for /f %%a in (a.txt) do (
- for /f %%b in ('findstr "%%a" tmp.txt') do echo %%a\t%%b))
- pause
复制代码
::上面不行就试试这个- >b.txt (for /f %%a in ('type a.txt') do (
- for /f %%b in ('type tmp.txt ^| findstr "%%a"') do echo %%a\t%%b))
- pause
复制代码
作者: Gin_Q 时间: 2019-12-5 19:34
回复 6# Gin_Q
32位系统第一个用不了@Batcher您知道什么情况吗??
64位系统的可以用
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |