如何替换 Linux 中多个 xml 文件中的文本

How to replace text in multiple xml files in Linux

我有以下 xml header :

<wechselkurse xmlns:xsi="https://www.bnd-rates.ezv.admin.ch/monthly" xsi:schemaLocation="https://www.bnd-rates.ezv.admin.ch/monthlyrates.xsd">

我想用 :

替换多个 xml 文件中的 header
<wechselkurse xmlns="http://www.ps.ezv.admin.ch/apps/rates" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ps.ezv.admin.ch/apps/rates/monthlyrates.xsd">

我尝试了下面的 find 命令,该命令没有抛出错误,但它甚至没有工作:

sed -i "s#<wechselkurse xmlns:xsi="https://www.bnd-rates.ezv.admin.ch/monthly" xsi:schemaLocation="https://www.bnd-rates.ezv.admin.ch/monthlyrates.xsd">#<wechselkurse xmlns="http://www.ps.ezv.admin.ch/apps/rates" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ps.ezv.admin.ch/apps/rates/monthlyrates.xsd">#" *.xml

由于 sed 命令中的替换使用了双引号,因此您应该用单引号将命令括起来。

sed -i 's#<wechselkurse xmlns:xsi="https://www.bnd-rates.ezv.admin.ch/monthly" xsi:schemaLocation="https://www.bnd-rates.ezv.admin.ch/monthlyrates.xsd">#<wechselkurse xmlns="http://www.ps.ezv.admin.ch/apps/rates" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ps.ezv.admin.ch/apps/rates/monthlyrates.xsd">#' *.xml