首页 > 其他 > 详细

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

时间:2014-03-01 14:20:01      阅读:547      评论:0      收藏:0      [点我收藏+]

有这样一个文件:

<?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


执行截图:

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣






使用sed给文件的指定行添加内容,布布扣,bubuko.com

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

原文:http://leezqang.blog.51cto.com/1525874/1365077

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!