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

[文本处理] 如何替换掉指定字符串之后的内容?

本帖最后由 pcl_test 于 2016-4-6 22:48 编辑

例如文件A.txt内容有多行,其中有三行分别为:

CurrentGroup=AAAA
CurrentServer=BBBB
CurrentLine=CCCC
AAAA、BBBB、CCCC内容及长度都不固定,
如何把CurrentGroup=    CurrentServer=    CurrentLine=这三个字符串后的不固定内容分别替换成EEE、FFF、GGG

求高手指点一下,万分感谢!!!

找资料学正则表达式。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

  1. @echo off
  2. (for /f "delims=" %%a in ('type "A.txt"^|findstr /n .*') do (
  3. set "str=%%a"
  4. setlocal enabledelayedexpansion
  5. set "str=!str:*:=!"
  6. if "!str:~0,13!"=="CurrentGroup=" (
  7. echo CurrentGroup=EEE
  8. ) else (
  9. if "!str:~0,14!"=="CurrentServer=" (
  10. echo CurrentServer=FFF
  11. ) else (
  12. if "!str:~0,12!"=="CurrentLine=" (
  13. echo CurrentLine=GGG
  14. ) else (
  15. echo;!str!
  16. )
  17. )
  18. )
  19. endlocal
  20. ))>$
  21. move $ A.txt
复制代码
回复 1# hjh22222

TOP

第三方
  1. sed -i -r -e "s/^([ \t]*CurrentGroup=).+/\1eee/;s/^([ \t]*CurrentServer=).+/\1fff/;s/^([ \t]*CurrentLine=).+/\1ggg/" a.txt
复制代码

TOP

  1. fr -ric:"(CurrentGroup=).*" -t:"\1aaaa" a.txt
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 CrLf 于 2016-4-7 01:42 编辑

暴力解1:
  1. @echo off
  2. for /f "delims==" %%a in ('set') do set "%%a="
  3. set CurrentGroup=AAAA
  4. set CurrentServer=BBBB
  5. set CurrentLine=CCCC
  6. (for /f "delims=" %%a in (a.txt) do (
  7.    for /f "delims==" %%b in ("%%a") do (
  8.       if defined #%%b (set %%b) else echo %%a
  9.    )
  10. ))>b.txt
  11. pause
复制代码
暴力解2:
  1. @echo off
  2. (for /f "tokens=1* delims==" %%a in (a.txt) do (
  3. set "name=%%b"
  4. set "%%a=%%b"
  5. set CurrentGroup=AAAA
  6. set CurrentServer=BBBB
  7. set CurrentLine=CCCC
  8. setlocal enabledelayedexpansion
  9. echo !name!=!%%a!
  10. endlocal
  11. ))>b.txt
  12. pause
复制代码

TOP

返回列表