我们在工作中少不了与xml接触,有时需要修改xml中的属性值,如果xml文件比较冗长且需要修改的东西较多,那么手动修改就是件麻烦事。可以尝试使用sed命令来替我们做这件事。
test.xml的内容如下:
<val id="AA" name="c1"/>
<val id="BB" name="d1"/>
假设我们要把id为AA的记录的name修改为c2 , 使用如下的命令
sed -i -E 's/id="AA"\s+name="[^"]+"/id="AA" name="c2"/' test.xml
把这条命令写入脚本:
1 sed-E.sh
#!/bin/sh
echo "input file is $1"
if [ $# -eq 1 ]; then
sed -E 's/id="AA"\s+name="[^"]+"/id="AA" name="c2"/' $1
else
echo "parameter is error"
fi
cat $1
2 sed-i-E.sh
#!/bin/sh
echo "input file is $1"
if [ $# -eq 1 ]; then
sed -i -E 's/id="AA"\s+name="[^"]+"/id="AA" name="c2"/' $1
else
echo "parameter is error"
fi
cat $1
3 recover.sh
#!/bin/sh
echo "input file is $1"
if [ $# -eq 1 ]; then
sed -i -E 's/id="AA"\s+name="[^"]+"/id="AA" name="c1"/' $1
else
echo "parameter is error"
fi
cat $1