我需要使用sed。
从shell脚本替换xml文件中的versionName<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.sed"
android:versionCode="1"
android:versionName="UNKNOWN VERSION NAME">
我已经到目前为止搜索包含versionName的行,但是如何告诉sed替换版本名后面的双引号中的所有内容?
sed -i .old '/versionName/ s/WHAT TO WRITE?/NEW VERSION NAME/' AndroidManifest.xml
答案 0 :(得分:2)
替换not-"
,如下所示:
sed -i .old '/android:versionName/ s/="[^"][^"]*"/="NEW VERSION NAME"/' AndroidManifest.xml
答案 1 :(得分:0)
@model IEnumerable<SurveyTool.Models.SURV_Question_Ext_Model>
<br />
<table class="strip">
@foreach (var item in Model)
{
<tr>
<td width="5%"></td>
<td>
@Html.ActionLink("QuestionLink", "Edit", "SURV_Answer", new { Language = item.Qext_Language }, null)
</td>
</tr>
}
</table>
sed 's/\([[:blank:]]android:versionName="\)[^"]*"/\1Your New Value"/' YourFile
的部分都将被更改android:versionName
替换为[[:blan:k]]
(如果直接修改避免临时文件,则为\(^\|[[:blank:]]\)
)答案 2 :(得分:0)
考虑到xml的性质和版本号,使用更简单的命令实际上是非常安全的:
sed -i '/versionName/s/".*"/"NEW VERSION NAME"/' AndroidManifest.xml
P.S。在我看来,能够根据具体情况和合理的假设来简化shell脚本非常重要。