linux sed 替换 连续 多行

我想要用linuxshell脚本替换一个文件中的,模式匹配到的,连续的多行,请问怎么操作?如,要在如下a.file中替换name为javax.jdo.option.Con... 我想要用linux shell脚本替换一个文件中的,模式匹配到的,连续的多行,请问怎么操作?
如,要在如下a.file中替换name为 javax.jdo.option.ConnectionDriverName的property为一个字符串ddd
<?xml version="1.0"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=/var/lib/hive/metastore/metastore_db;create=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
</configuration>

sed 's/<property>\s+<name>javax.jdo.option.ConnectionDriverName<\/name>\s+.+\s+.+\s*<\/property>/ddd/g' /etc/hive/conf/hive-site.xml
没作用。
请高手指点!
===============

替换后变成
<?xml version="1.0"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=/var/lib/hive/metastore/metastore_db;create=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>

ddd
</configuration>
展开
 我来答
albumin
推荐于2016-01-25 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2328万
展开全部
awk '     
    para==""&&$0 !~ /<property>/
    /<property>/,/<\/property>/{
        para=para==""?$0:para"\n"$0
        if ($0 ~ /<\/property>/)
        {
            if (para ~ /<property>[ \t\n]*<name>javax.jdo.option.ConnectionDriverName<\/name>.*<\/property>/)
                print "ddd"
        else
            print para
        para=""
        }
    }
   '  /etc/hive/conf/hive-site.xml
cheng6211
2015-09-16 · TA获得超过357个赞
知道小有建树答主
回答量:192
采纳率:100%
帮助的人:88万
展开全部
没看懂你想得到啥结果。就上述文件,你想替换后的结果是什么样的??
追问

javax.jdo.option.ConnectionDriverName
。。。

这段换成ddd
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式