sed多行替换

2,246 阅读1分钟

1.直接替换

原文件

ARCHS = (
    arm64,
    x86_64,
);

结果文件

ARCHS = arm64;

执行命令,注意这里不能写成一行ARCHS = (是替换开始字符,);是替换结束字符

sed -i "" '/ARCHS = (/,/);/c\
ARCHS = arm64;\
' project.pbxproj

2.不更改源文件,保存到新文件

原文件

<!--tokenHeadStart-->\
test\
<!--tokenHeadEnd-->

结果文件

<!--tokenHeadStart-->\
<ul>\
<li><a href="#"></a><img alt="御寒单品大搜查" src="img/slide-01.jpg"></a></li>\
<li><a href="#"></a><img alt="袜!你好萌" src="img/slide-02.jpg"></a></li>\
<li><a href="#"></a><img alt="Moschino的戏谑人生" src="img/slide-03.jpg"></a></li>\
</ul>\
<!--tokenHeadEnd-->

执行命令tokenHeadStart是替换开始字符,tokenHeadEnd替换结束字符

sed '/tokenHeadStart/,/tokenHeadEnd/c\\
<!--tokenHeadStart-->\\
<ul>\\
<li><a href="#"></a><img alt="御寒单品大搜查" src="img/slide-01.jpg"></a></li>\\
<li><a href="#"></a><img alt="袜!你好萌" src="img/slide-02.jpg"></a></li>\\
<li><a href="#"></a><img alt="Moschino的戏谑人生" src="img/slide-03.jpg"></a></li>\\
</ul>\\
<!--tokenHeadEnd-->' file.txt >result.txt

单行替换

#icon
sed -i "" "s/ASSETCATALOG_COMPILER_APPICON_NAME = .*;/ASSETCATALOG_COMPILER_APPICON_NAME = \"${APPICON_NAME}\";/g" $Pbxproj_Path
#包名
sed -i "" "s/PRODUCT_BUNDLE_IDENTIFIER = .*;/PRODUCT_BUNDLE_IDENTIFIER = ${BUNDLE_IDENTIFIER};/g" $Pbxproj_Path


$plistBuddy -c "Set CFBundleDisplayName \"${d_App_Display_Name}\"" $Info_Plist_Path
# $plistBuddy -c "Set CFBundleShortVersionString \"${SHORT_VERSION}\"" $Info_Plist_Path
#启动页
$plistBuddy -c "Set UILaunchStoryboardName \"${LaunchStoryboardName}\"" $Info_Plist_Path
#包名
$plistBuddy -c "Set CFBundleIdentifier \"${BUNDLE_IDENTIFIER}\"" $Info_Plist_Path