您的位置:首页 > 其它

使用sed给文件的指定行添加内容

2014-02-28 15:11 246 查看
有这样一个文件:
<?xml version="1.0" encoding="utf-8" ?>
<version
sver="0.1.0.36"
rpcver="0.1.4.162"
tilver="0.1.0.52"
mpver="0.1.2.397"
npcver="0.1.1.353"
monver="0.1.3.697"
mitmver="0.1.0.120"
sklver="0.1.2.581"
itmver="0.1.2.731"
lver="0.1.0.120"
meriver="0.1.0.94"
misver="0.1.3.619"
petver="0.1.0.207"
lvlver="0.1.4.865"
mktver="0.1.0.330"
genver="0.1.2.348"
fellowver="0.1.1.64"
newguide="0.1.0.57"
activity="0.1.0.49"
fate="0.1.0.25"
>

</version>
因为有新功能,现在需要追加:
refine="0.1.0.12"
dailysign="0.1.0.4"
stonehenge="0.1.0.2"
三行内容
说明:
因为涉及到很多服务器,而且每个服务器的配置版本号不同,不能把他们都覆盖成为同一个文件。所以偷懒写了一个脚本,批量执行。
#!/bin/bash
cp versions.xml versions.xml.bak
sed -i"22a    refine=\"0.1.0.12\"\n  dailysign=\"0.1.0.4\" \n  stonehenge=\"0.1.0.2\"" versions.xml
sed -i"/^refine/ s/^/  / " versions.xml
/usr/bin/dos2unix versions.xml
tail versions.xml


分析:
第二行的sed是在versions.xml第22下添加上述三行内容
第三行的sed是将refine的行首加两个空格,以缩进一致
第四行是将修改后的文件格式转换成unix格式
扩展:
其实也可以使用 \ 来转意空格问题 上述的第二行第三行可以合并为这样
sed
-i
"22a  \  refine=\"0.1.0.12\"\n  dailysign=\"0.1.0.4\" \n  stonehenge=\"0.1.0.2\""
versions.xml


执行截图:








内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: