标题: [文本处理] 如何替换掉指定字符串之后的内容? [打印本页]
作者: hjh22222 时间: 2016-4-6 10:18 标题: 如何替换掉指定字符串之后的内容?
本帖最后由 pcl_test 于 2016-4-6 22:48 编辑
例如文件A.txt内容有多行,其中有三行分别为:
CurrentGroup=AAAA
CurrentServer=BBBB
CurrentLine=CCCC
AAAA、BBBB、CCCC内容及长度都不固定,
如何把CurrentGroup= CurrentServer= CurrentLine=这三个字符串后的不固定内容分别替换成EEE、FFF、GGG
求高手指点一下,万分感谢!!!
作者: codegay 时间: 2016-4-6 10:20
找资料学正则表达式。
作者: happy886rr 时间: 2016-4-6 11:31
- @echo off
- (for /f "delims=" %%a in ('type "A.txt"^|findstr /n .*') do (
- set "str=%%a"
- setlocal enabledelayedexpansion
- set "str=!str:*:=!"
- if "!str:~0,13!"=="CurrentGroup=" (
- echo CurrentGroup=EEE
- ) else (
- if "!str:~0,14!"=="CurrentServer=" (
- echo CurrentServer=FFF
- ) else (
- if "!str:~0,12!"=="CurrentLine=" (
- echo CurrentLine=GGG
- ) else (
- echo;!str!
- )
- )
- )
- endlocal
- ))>$
- move $ A.txt
复制代码
回复 1# hjh22222
作者: pcl_test 时间: 2016-4-6 23:56
第三方- sed -i -r -e "s/^([ \t]*CurrentGroup=).+/\1eee/;s/^([ \t]*CurrentServer=).+/\1fff/;s/^([ \t]*CurrentLine=).+/\1ggg/" a.txt
复制代码
作者: codegay 时间: 2016-4-7 00:45
- fr -ric:"(CurrentGroup=).*" -t:"\1aaaa" a.txt
复制代码
作者: CrLf 时间: 2016-4-7 00:49
本帖最后由 CrLf 于 2016-4-7 01:42 编辑
暴力解1:- @echo off
- for /f "delims==" %%a in ('set') do set "%%a="
-
- set CurrentGroup=AAAA
- set CurrentServer=BBBB
- set CurrentLine=CCCC
-
- (for /f "delims=" %%a in (a.txt) do (
- for /f "delims==" %%b in ("%%a") do (
- if defined #%%b (set %%b) else echo %%a
- )
- ))>b.txt
- pause
复制代码
暴力解2:- @echo off
-
- (for /f "tokens=1* delims==" %%a in (a.txt) do (
- set "name=%%b"
- set "%%a=%%b"
-
- set CurrentGroup=AAAA
- set CurrentServer=BBBB
- set CurrentLine=CCCC
-
- setlocal enabledelayedexpansion
- echo !name!=!%%a!
- endlocal
- ))>b.txt
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |