linux shell xml文件,在shell脚本中使用sed命令在XML文件中添加XML元素

我使用sed命令将xml元素插入到现有的xml文件中.

我有xml文件

john>

123

mike

234

我想添加新元素作为

NewName

NewID

所以我的新xml文件将是

john>

123

mike

234

NewName

NewID

为此,我编写了shell脚本

#! /bin/bash

CONTENT="

NewName

NewID

"

#sed -i.bak '// i \ "$CONTENT" /root/1.xml

sed -i.bak '// i \'$CONTENT'/' /root/1.xml

我收到错误了

sed: can't read NewName: No such file or directory

sed: can't read NewID: No such file or directory

sed: can't read : No such file or directory

并且在xml文件中,只有< student>被添加.

其余元素未添加.

有谁知道为什么这个错误?

Shell脚本更新XML文件插入文时,可能会出现乱码的问题。这是因为Shell脚本默认使用的是ASCII编码,而XML文件包含的是Unicode编码的文字符。 要解决这个问题,可以使用iconv命令Shell脚本的ASCII编码转换为XML文件的Unicode编码。具体的做法如下: 1. 打开Shell脚本,查看脚本使用的编码格式。可以使用file命令查看,例如: ``` file script.sh ``` 2. 打开XML文件,查看文件的编码格式。可以使用file命令查看,例如: ``` file file.xml ``` 3. 如果Shell脚本XML文件的编码格式不一致,可以使用iconv命令进行转换。例如,如果Shell脚本使用的是UTF-8编码,而XML文件使用的是GBK编码,可以使用如下命令进行转换: ``` iconv -f UTF-8 -t GBK script.sh > script_new.sh ``` 其,-f参数指定源编码格式,-t参数指定目标编码格式,script_new.sh为转换后的新脚本文件名。 4. 在转换后的Shell脚本使用sed命令更新XML文件。例如,要在XML文件插入文字符"测试",可以使用如下命令: ``` sed -i 's|</root>| <name>测试</name>\n</root>|g' file.xml ``` 其,-i参数表示直接修改原文件,s命令用于替换文本,|用于分隔命令的不同部分。 5. 最后,可以使用iconv命令XML文件恢复为原来的编码格式。例如,如果XML文件原来使用的是GBK编码,可以使用如下命令进行转换: ``` iconv -f GBK -t UTF-8 file.xml > file_new.xml ``` 其,-f参数指定源编码格式,-t参数指定目标编码格式,file_new.xml为转换后的新XML文件名。 通过以上步骤,可以在Shell脚本更新XML文件插入文字符,同时避免出现乱码问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值