标题: [文本处理] [已解决]如何让批处理删除文本的指定特征字? [打印本页]
作者: xptool 时间: 2011-2-10 17:44 标题: [已解决]如何让批处理删除文本的指定特征字?
本帖最后由 xptool 于 2011-10-12 19:54 编辑
如何让批处理删除文本的指定特征字
例如 文本a.txt 处理后 存在b.txt
=1a248eefe9079208adedfb0b8f391e59 target=总是blank><img src特征=../images/2.gif name='tmp2'
1
删除 总是 和 特征之间的文字不包含总是 和特征
结果
=1a248eefe9079208adedfb0b8f391e59 target=总是特征=../images/2.gif name='tmp2'
2
删除总是和特征之间的文字 包含总是和特征
结果
=1a248eefe9079208adedfb0b8f391e59 target==../images/2.gif name='tmp2'
3
删除总是和特征
=1a248eefe9079208adedfb0b8f391e59 target=blank><img src=../images/2.gif name='tmp2'
谢谢朋友们帮助
[ 本帖最后由 xptool 于 2011-2-10 17:51 编辑 ]
作者: CrLf 时间: 2011-2-10 17:56
这用纯P比较麻烦,sed应该很方便,等人来~
建议求助的时候言简意赅,要不然估计很多人会没耐心看...举例时化繁为简,就像演戏时不需要把每个人名字都报出来,配角只需要说路人甲、路人乙就行了
作者: xptool 时间: 2011-2-10 18:30
谢谢
希望大家能看懂
作者: lvsehuaxue 时间: 2011-2-11 09:23
- @echo off
- for /f "tokens=1-3 delims=总是特征" %%i in (a.txt) do (
- echo %%i总是特征%%k>>b.txt
- echo %%i%%k>>b.txt
- echo %%i%%j%%k>>b.txt
- )
- pause
复制代码
作者: CrLf 时间: 2011-2-11 11:33
楼上这样会漏字。
1:- @echo off&setlocal enabledelayedexpansion
- (for /f "delims=" %%i in (a.txt) do (
- set tmp=%%i
- set /a 总是=0,特征=0
- for /l %%a in (0 1 1000) do (
- if !总是!==0 set /p=!tmp:~%%a,1!<nul
- if "!tmp:~%%a,2!"=="总是" set 总是=1&set /p=是<nul
- if "!tmp:~%%a,2!"=="特征" (
- if !总是!==1 set /p=!tmp:~%%a,1!<nul
- set 总是=0
- )
- )
- echo;
- ))>b.txt
- pause
复制代码
2:- @echo off&setlocal enabledelayedexpansion
- (for /f "delims=" %%i in (a.txt) do (
- set tmp=%%i
- set /a 总是=0,特征=0
- for /l %%a in (0 1 1000) do (
- set /a "特征-=^!^!特征"
- if "!tmp:~%%a,2!"=="总是" set 总是=1
- if "!tmp:~%%a,2!"=="特征" (
- set /a 总是=0,特征=2
- )
- if !总是!==0 if !特征!==0 set /p=!tmp:~%%a,1!<nul
- )
- echo;
- ))>b.txt
- pause
复制代码
3:- @echo off&setlocal enabledelayedexpansion
- (for /f "delims=" %%i in (a.txt) do (
- set tmp=%%i
- set "tmp=!tmp:总是=!"&set "tmp=!tmp:特征=!"
- for %%a in ("!tmp!") do echo %%~a
- ))>b.txt
- pause
- ::效率高,但是遇到特殊字符可能出错
复制代码
- @echo off &setlocal enabledelayedexpansion
- (for /f "delims=" %%i in (a.txt) do (
- set tmp=%%i
- set /a 总是=0,特征=0
- for /l %%a in (0 1 1000) do (
- set /a "总是-=^!^!总是","特征-=^!^!特征"
- if "!tmp:~%%a,2!"=="总是" set 总是=2
- if "!tmp:~%%a,2!"=="特征" set 特征=2
- if !总是!==0 if !特征!==0 set /p "m=!tmp:~%%a,1!"<nul
- )
- echo;
- ))2>nul
- pause
- ::效率低,但是保险
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |