Board logo

标题: [文本处理] [已解决]如何让批处理删除文本的指定特征字? [打印本页]

作者: 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

  1. @echo off
  2. for /f "tokens=1-3 delims=总是特征" %%i in (a.txt) do (
  3.     echo %%i总是特征%%k>>b.txt
  4.     echo %%i%%k>>b.txt
  5.     echo %%i%%j%%k>>b.txt
  6. )
  7. pause
复制代码

作者: CrLf    时间: 2011-2-11 11:33

楼上这样会漏字。

1:
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%i in (a.txt) do (
  3.     set tmp=%%i
  4.     set /a 总是=0,特征=0
  5.     for /l %%a in (0 1 1000) do (
  6.         if !总是!==0 set /p=!tmp:~%%a,1!<nul
  7.         if "!tmp:~%%a,2!"=="总是" set 总是=1&set /p=是<nul
  8.         if "!tmp:~%%a,2!"=="特征" (
  9.             if !总是!==1 set /p=!tmp:~%%a,1!<nul
  10.             set 总是=0
  11.         )
  12.     )
  13.     echo;
  14. ))>b.txt
  15. pause
复制代码
2:
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%i in (a.txt) do (
  3.     set tmp=%%i
  4.     set /a 总是=0,特征=0
  5.     for /l %%a in (0 1 1000) do (
  6.         set /a "特征-=^!^!特征"
  7.         if "!tmp:~%%a,2!"=="总是" set 总是=1
  8.         if "!tmp:~%%a,2!"=="特征" (
  9.             set /a 总是=0,特征=2
  10.         )
  11.         if !总是!==0 if !特征!==0 set /p=!tmp:~%%a,1!<nul
  12.     )
  13.     echo;
  14. ))>b.txt
  15. pause
复制代码
3:
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%i in (a.txt) do (
  3.     set tmp=%%i
  4.     set "tmp=!tmp:总是=!"&set "tmp=!tmp:特征=!"
  5. for %%a in ("!tmp!") do echo %%~a
  6. ))>b.txt
  7. pause
  8. ::效率高,但是遇到特殊字符可能出错
复制代码
  1. @echo off &setlocal enabledelayedexpansion
  2. (for /f "delims=" %%i in (a.txt) do (
  3.     set tmp=%%i
  4.     set /a 总是=0,特征=0
  5.     for /l %%a in (0 1 1000) do (
  6.         set /a "总是-=^!^!总是","特征-=^!^!特征"
  7.         if "!tmp:~%%a,2!"=="总是" set 总是=2
  8.         if "!tmp:~%%a,2!"=="特征" set 特征=2
  9.         if !总是!==0 if !特征!==0 set /p "m=!tmp:~%%a,1!"<nul
  10.     )
  11.     echo;
  12. ))2>nul
  13. pause
  14. ::效率低,但是保险
复制代码





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