sed 替换双引号内的内容

mac*_*ach 5 regex bash sed

我需要使用 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">
Run Code Online (Sandbox Code Playgroud)

我已经搜索了包含 versionName 的行,但是如何告诉 sed 替换 versionName 之后直接出现的双引号内的所有内容?

sed -i .old '/versionName/ s/WHAT TO WRITE?/NEW VERSION NAME/' AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)

lcd*_*047 6

替换not-",像这样:

sed -i .old '/android:versionName/ s/="[^"][^"]*"/="NEW VERSION NAME"/' AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)