我有以下字符串
<dataSource jndiName="worklightconsole/jdbc/WorklightDS" transactional="false">
我想替换“worklightconsole”这个词。使用&#39; app&#39;所以输出看起来像下面
<dataSource jndiName="app/jdbc/WorklightDS" transactional="false">
我尝试了以下(以及其他一些选项)使用&#39; sed&#39;但无法使其发挥作用
sed -e 's/\<dataSource\ jndiName=\".*\//\dataSource\ jndiName=\"app\//g'
我得到的输出为
<dataSource jndiName="app/WorklightDS" transactional="false">
而不是替换“worklightconsole”这个词。它取代了#work; worklightconsole / jdbc&#39;与&#39; app&#39;
我做错了什么,以及&#39;。&#39;是什么意思。在sed?
答案 0 :(得分:0)
使用GNU sed:
sed -E 's|(jndiName=")[^/]*(/jdbc/WorklightDS")|\1app\2|' file
替换“就地”:
sed -E -i 's|(jndiName=")[^/]*(/jdbc/WorklightDS")|\1app\2|' file
.
:一次匹配任何字符
.*
:匹配任何字符零次或多次