如何在Linux中查找和替换多行文本?

时间:2015-11-21 01:23:50

标签: xml linux bash text replace

我正在读取XML文件,并希望找到此属性并将值替换为50乘以45 之前:

<name>ipc.client.connect.max.retries</name> 
<value>50</value>

后:

<name>ipc.client.connect.max.retries</name> 
<value>45</value>

我正在使用

pcregrep -M '<name>ipc.client.connect.max.retries</name>.*(\n|.)*<value>45</value>' core-site.xml  

找到字符串。

我试过

sed 's/$string1/$string2' core-site.xml 

它不起作用

1 个答案:

答案 0 :(得分:1)

你可以这样做:

sed '/<name>/{N;s/50/45/}' yourfilename

要查找代码<name>,然后在以下行中将50替换为45。要使用sed -i进行编辑,或使用原始sed -i.bak

的备份