[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

【完结】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
复制代码

回复 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
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 lxh623 于 2019-12-5 16:08 编辑

群里无法发红包,怎么办。我记得以前还可以转账给您。
我进的是公众号。
已经论坛捐助20元。谢谢!

TOP

回复 3# lxh623


这次我替你在微信群里发红包
请微信添加朋友:BatHome加群助手,拉你入群。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 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')
复制代码
改一下,不用正则,回溯次数太多,效率不高。
1

评分人数

TOP

本帖最后由 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
复制代码
1

评分人数

TOP

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

TOP

返回列表