用sed替换xml文件的内容

时间:2016-09-22 06:33:11

标签: shell sed

我有一个看起来像这样的文件

  <variable name="VOS_BRANCH">
    <name>VOS_BRANCH</name>
    <type>string</type>
    <value>cer_mainline</value>
  </variable>
  <variable name="VOS_BRANCH_LABEL">
    <name>VOS_BRANCH_LABEL</name>
    <type>string</type>
    <value>CER_FREEZE_12_0_0_98000_6_CCT</value>
  </variable>

所以现在我想将值CER_FREEZE_12_0_0_98000_6_CCT和cer_mainline替换为我作为参数传递给脚本的其他值。

我现在正在做的是

xml ed -u "/ENV_VARIABLES/variable[@name='VOS_BRANCH']/value" -v $new_branch_name $file > $file1
mv $file1 $file
xml ed -u "/ENV_VARIABLES/variable[@name='VOS_BRANCH_LABEL']/value" -v $new_branch_label $file > $file1
mv $file1 $file

但现在要求使用sed来执行此操作。 我不知道如何在这里使用sed

1 个答案:

答案 0 :(得分:1)

试试这个:

sed "
    /<variable name=\"VOS_BRANCH\">/,/<\/variable>/ s@<value>.*</value>@<value>$new_branch_name</value>@;
    /<variable name=\"VOS_BRANCH_LABEL\">/,/<\/variable>/ s@<value>.*</value>@<value>$new_branch_label</value>@
" "$file"

这会将新内容写入终端。如果您满意,可以像以前一样添加> "$file1",也可以将-i选项添加到sed以便就地编辑文件。