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> 展开
如,要在如下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> 展开
2个回答
展开全部
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |