Board logo

标题: 【完结】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里面没有-。
  1. @echo off
  2. for /f "tokens=1 delims=-" %%i in (a.txt) do (
  3.     for /f "delims=" %%a in ('findstr /g:a.txt tmp.txt')
  4. ) do echo "%%i--%%a" >>b.txt
复制代码

作者: Batcher    时间: 2019-12-5 15:47

回复 1# lxh623
  1. @echo off
  2. (for /f %%i in ('type "a.txt"') do (
  3.     for /f "delims=" %%a in ('findstr "%%i" tmp.txt') do (
  4.         echo "%%i--%%a"
  5.     )
  6. ))>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
试试
  1. var fso = new ActiveXObject('Scripting.FileSystemObject');
  2. var f1 = fso.OpenTextFile('a.txt', 1);
  3. var f2 = fso.OpenTextFile('tmp.txt', 1);
  4. var arr = [], map = [];
  5. while( !f1.AtEndOfStream ){
  6.     var s = f1.ReadLine();
  7.     if(!/^\s*$/.test(s)) map[s] = 1;
  8. }
  9. while( !f2.AtEndOfStream ){
  10.     var s = f2.ReadLine();
  11.     for(var i=2; i<=7; i++){
  12.         for(var j=0; j<=s.length-i; j++){
  13.             var s1 = s.substr(j,i);
  14.             if(map[s1]) arr.push(s1 + '\t' + s);
  15.         }
  16.     }
  17. }
  18. fso.OpenTextFile('b.txt', 2, true).WriteLine(arr.join('\r\n'));
  19. WSH.Echo('Done')
复制代码
改一下,不用正则,回溯次数太多,效率不高。
作者: Gin_Q    时间: 2019-12-5 19:19

本帖最后由 Gin_Q 于 2019-12-5 20:17 编辑
  1. @echo off&title gan
  2. ::出现乱码请把文本另存为ANSI编码
  3. ::有特殊字符需要在echo后面加""
  4. >b.txt (for /f  %%a in (a.txt) do (
  5. for /f %%b in ('findstr "%%a" tmp.txt') do echo %%a\t%%b))
  6. pause
复制代码
::上面不行就试试这个
  1. >b.txt (for /f %%a in ('type a.txt') do (
  2. for /f %%b in ('type tmp.txt ^| findstr "%%a"') do echo %%a\t%%b))
  3. pause
复制代码

作者: Gin_Q    时间: 2019-12-5 19:34

回复 6# Gin_Q
32位系统第一个用不了@Batcher您知道什么情况吗??
64位系统的可以用




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