我需要使用sed来搜索这一行
<Connector URIEncoding="UTF-8" port="8009" protocol="AJP/1.3" redirectPort="8443" />
并将其替换为新的3行
<Connector URIEncoding="UTF-8" port="8009" protocol="AJP/1.3" redirectPort="8443"
maxThreads="300" minSpareThreads="25" maxSpareThreads="75" acceptCount="100"
enableLookups="false" connectionTimeout="60000" />
我使用了以下模式,但我相信我错过了逃避部分
sed -i 's/ <Connector URIEncoding="UTF-8" port="8009" protocol="AJP/1.3" redirectPort="8443" />/<Connector URIEncoding="UTF-8" port="8009" protocol="AJP/1.3" redirectPort="8443"
maxThreads="300" minSpareThreads="25" maxSpareThreads="75" acceptCount="100"
enableLookups="false" connectionTimeout="60000" />/g'
建议
答案 0 :(得分:1)
问题是您的搜索字符串确实包含/
。我把它作为sed
代码的一部分
尝试
sed -i 's|search|replace|g' file
你的sed
在字符串前搜索一个空格。需要删除:
s/ <
正确
s/<
完成命令:
sed -i 's|<Connector URIEncoding="UTF-8" port="8009" protocol="AJP/1.3" redirectPort="8443" />|<Connector URIEncoding="UTF-8" port="8009" protocol="AJP/1.3" redirectPort="8443" maxThreads="300" minSpareThreads="25" maxSpareThreads="75" acceptCount="100" enableLookups="false" connectionTimeout="60000" />|g' file
答案 1 :(得分:0)
要么反斜杠搜索字符串中的斜杠(你也应该为点做这些以防止它们与任何字符匹配)。
或者,使用适当的XML处理工具来处理XML数据。例如,xsh:
open file.xml ;
for //Connector[@URIEncoding="UTF-8" and @port="8009"
and @protocol="AJP/1.3" and @redirectPort="8443"] {
set @maxThreads 300 ;
set @minSpareThreads 25 ;
set @enableLookups 'false' ;
# etc.
}
save :b ;