标题: [文本处理] [已解决]BAT如何提取TXT中某两个字符中间的文本? [打印本页]
作者: rigg 时间: 2015-12-24 12:38 标题: [已解决]BAT如何提取TXT中某两个字符中间的文本?
本帖最后由 rigg 于 2016-1-22 21:15 编辑
样本数据1:
http://www.abc.com/eee.txt|123abc
http://www.cde.com/12e.txt|4325te
提取|后面的字符,
123abc
4325te
保存到一个新的记事本。
样本数据2:
<a href="http://bbs.chinaz.com/forum-51-1.html" target="_blank">站长茶馆</a>
<a href="http://bbs.chinaz.com/forum-167-1.html" target="_blank">站长交易</a>
<a href="http://bbs.chinaz.com/forum-165-1.html" target="_blank">站长技术</a>
提取
站长茶馆
站长交易
站长技术
保存到一个新的记事本。
求批处理达人帮忙处理,谢谢了
作者: flyinnet9 时间: 2015-12-24 13:59
- @echo off
- (for /f "tokens=2 delims=|" %%a in (1.txt) do echo.%%a)>result.txt
复制代码
- @echo off
- (for /f "tokens=2 delims=<>" %%a in (2.txt) do echo.%%a)>result.txt
复制代码
作者: rigg 时间: 2015-12-24 14:23
你好,能帮我做成适配性强一点的吗?
样本数据2可以自定义要提取内容的前后的分隔符号
作者: rigg 时间: 2015-12-24 14:29
- @echo off&setlocal enabledelayedexpansion
-
- set/p myfile=拖入要处理的文本并回车:
- set/p qian=输入前置符并回车:
- set/p hou=输入后置符并回车:
-
- (for /f "delims=" %%a in (%myfile%) do (
-
- set "str=%%a"
-
- for %%b in (^%qian% ^%hou% ) do set "str=!str:%%b= !"
-
- for %%b in (!str!) do set/a 1/1%%b &&echo,%%b
-
- ))>result.txt 2>nul
-
- start result.txt
复制代码
上面的是我参照别人的改的, 但是好像取出来的文本不对。
作者: 依山居 时间: 2015-12-24 15:36
自己学正则表达式去。
作者: /zhqsystem/zhq 时间: 2015-12-24 21:32
回复 1# rigg
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('type "%~f1"')do (
- set "name=%%i"
- set "name=!name:|=\!"
- set "name=!name:</a>=!"
- set "name=!name:>=\!"
- for /f "delims=" %%j in ("!name!") do (
- (echo,%%~nxj)>>"%~dp1new_%~nx1"
- )
- )
- pause
复制代码
作者: DAIC 时间: 2015-12-24 21:39
- sed "s/.*|//" 1.txt > 1_new.txt
复制代码
- sed "s#.*>\(.*\)</a>#\1#" 2.txt > 2_new.txt
复制代码
作者: DAIC 时间: 2015-12-24 21:45
- grep -Po "(?<=\|).*" 1.txt > 1_new.txt
复制代码
- grep -Po "(?<=>).*(?=</a>)" 2.txt > 2_new.txt
复制代码
作者: qie2015 时间: 2015-12-25 13:04
回复 2# flyinnet9
这代码学习了
作者: qie2015 时间: 2015-12-25 13:06
回复 2# flyinnet9
原来delims还可以这样分
作者: hlzj88 时间: 2015-12-29 21:51
如果 1楼的问题的描述都是类似网页链接这样的,也可以把txt ren html,,,然后用HtoX32c.exe来直接提取网页文字
作者: rigg 时间: 2016-1-7 20:21
本帖最后由 pcl_test 于 2016-1-7 20:48 编辑
回复 6# /zhqsystem/zhq
你好,如果前面">和后面的</a>不固定,要写成自定义的要怎么写呢?
作者: /zhqsystem/zhq 时间: 2016-1-8 00:04
本帖最后由 /zhqsystem/zhq 于 2016-1-8 01:05 编辑
回复 12# rigg
加入自动识别空格前字段=后字段[红色区域],%%k为提取的字段,例如: <adsfdfe jvmbn,n ==ed>提取的内容</adsfdfe>
也可以利用上次发的替换>为\,删除后字段剩余%%~nx变量,[这种提取内容不允许有\会被误读成路径%%~nx时就会出错]
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('type "%~f1"')do (
- for /f %%j in ("%%~i")do (
- set "names=%%i"
- set "names=!names:%%j=!"
- set "names=!names:"=!"
- set "name=%%j"
- set "name=!name:<=</!"
- set "name=!name!>"
- )
- for /f "delims=" %%j in ("!name!")do (
- set "names=!names:%%j=!"
- set "names=!names:<=!"
- )
- for /f "tokens=1,* delims=>" %%j in ("!names!")do (echo,%%k)
- rem:此行的上下行只保留其一,2个标点">"更改上行tokens=2,*,下两行不区分>标点只取值最后的名称及其后缀
- set "names=!names:>=\!"
- for /f "delims=" %%j in ("!names!")do (echo,%%~nxj)
- )
- pause
复制代码
作者: rigg 时间: 2016-1-22 21:15
回复 rigg
加入自动识别空格前字段=后字段[红色区域],%%k为提取的字段,例如: 提取的内容
也可以利用上次 ...
/zhqsystem/zhq 发表于 2016-1-8 00:04
非常感谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |