正文
sed替换 - 含斜杠(\)和Shell变量
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
gen_image.bat中的内容如下:
FOTARomPacker.exe -i .\_ini\FOTARomPacker.ini -o .\_Output\a.bin
@IF %ERRORLEVEL% NEQ goto GEN_IMAGE_ERROR :OK
@echo ========================
@echo Generate image done!
@echo ========================
xcopy .\_Output\a.bin ..\out\mt7686_hdk\audio_sv5_hmd702w\ /y
@goto END :GEN_IMAGE_ERROR
@echo ========================
@echo Gen image error!
@echo ========================
@goto END :END
::pause
我要将其中的“_Output\a.bin”替换为“_Output\b.bin”。那么Shell(Bash)脚本应该为:
filename_update=b.bin
sed -i "s:_Output.*bin:_Output\\\\${filename_update}:g" gen_image.bat
替换后的效果如下
FOTARomPacker.exe -i .\_ini\FOTARomPacker.ini -o .\_Output\b.bin
@IF %ERRORLEVEL% NEQ goto GEN_IMAGE_ERROR :OK
@echo ========================
@echo Generate image done!
@echo ========================
xcopy .\_Output\b.bin ..\out\mt7686_hdk\audio_sv5_hmd702w\ /y
@goto END :GEN_IMAGE_ERROR
@echo ========================
@echo Gen image error!
@echo ========================
@goto END :END
::pause
其中:
1、s后的冒号(:)是分隔符,使用默认的反斜杠(/)也可以。
2、替换字符串是变量时,需要使用双引号。