Bash sed替换xml标记中的文本${something}

Bash sed替换xml标记中的文本${something},bash,sed,Bash,Sed,我正在尝试执行以下操作: find . -iname pom.xml | xargs sed -i "s/<version>${project.version}</version>/<version>0.9.1-SNAPSHOT</version>/g" find-iname pom.xml |xargs sed-i “s/${project.version}/0.9.1-SNAPSHOT/g” 但它不起作用。我在这里逃走需要什么 我尝试

我正在尝试执行以下操作:

find . -iname pom.xml 
| xargs sed -i 
 "s/<version>${project.version}</version>/<version>0.9.1-SNAPSHOT</version>/g"
find-iname pom.xml
|xargs sed-i
“s/${project.version}/0.9.1-SNAPSHOT/g”
但它不起作用。我在这里逃走需要什么


我尝试了多种组合,比如在version和
$
中转义
/

Escape
$
。使用不同的分隔符(

sed“s;\${project\.version};0.9.1-SNAPSHOT;g”

Escape
$
。使用不同的分隔符(

sed“s;\${project\.version};0.9.1-SNAPSHOT;g”

需要的匹配字符串是
\${project\.version}
(转义
$
/
)。所需的替换字符串是
0.9.1-SNAPSHOT
(转义
/

综合起来,可以得出:


“s/\${project\.version}/0.9.1-SNAPSHOT/g”

需要的匹配字符串是
\${project\.version}
(转义
$
//code>)。所需的替换字符串是
0.9.1-SNAPSHOT
(转义
/

综合起来,可以得出:


“s/\${project\.version}/0.9.1-SNAPSHOT/g”

避开这些点是正确的,但每当我发现自己这样做时,我就会觉得有点迂腐;毕竟,一个转义点将匹配一个文字点,并且不太可能有另一个字符串匹配
project.version
,是吗?@Tom Anderson您是对的,在这个特定的示例中,它不太可能产生差异,但这是一个好习惯!逃避这些点是正确的,但每当我发现自己这样做时,我就觉得有点迂腐;毕竟,一个转义点将匹配一个文字点,并且不太可能有另一个字符串匹配
project.version
,是吗?@Tom Anderson您是对的,在这个特定的示例中,它不太可能产生差异,但这是一个好习惯+1特别是用于使用不同的分隔符(我通常使用#,但无所谓)。+1特别是用于使用不同的分隔符(我通常使用#,但无所谓)。
sed "s;<version>\${project\.version}</version>;<version>0.9.1-SNAPSHOT</version>;g"