找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25186|回复: 5

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

[复制链接]
发表于 2016-4-6 10:18:27 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-4-6 22:48 编辑

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

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

求高手指点一下,万分感谢!!!
发表于 2016-4-6 10:20:33 | 显示全部楼层
找资料学正则表达式。
发表于 2016-4-6 11:31:48 | 显示全部楼层
  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
发表于 2016-4-6 23:56:37 | 显示全部楼层
第三方
  1. sed -i -r -e "s/^([ \t]*CurrentGroup=).+/\1eee/;s/^([ \t]*CurrentServer=).+/\1fff/;s/^([ \t]*CurrentLine=).+/\1ggg/" a.txt
复制代码
发表于 2016-4-7 00:45:02 | 显示全部楼层
  1. fr -ric:"(CurrentGroup=).*" -t:"\1aaaa" a.txt
复制代码
发表于 2016-4-7 00:49:46 | 显示全部楼层
本帖最后由 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 03:08 , Processed in 0.018713 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表