我知道之前已经问过这个问题,我似乎无法获得我的sed命令的正确语法 .
我需要用 OPP/com.user.opp.orchest.po.services.stub-ica/npo-ica
替换 OPP/com.user.opp.orchest.po.services.stub-npo/npo-stub
我正在替换它的文件的片段如下:
config.xml
<compareType>PLAIN</compareType>
<pattern>
OPP/com.user.opp.orchest.po.services.stub-npo/npo-stub
</pattern>
<branches>
<com.sonyuser.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
<compareType>ANT</compareType>
<pattern>master</pattern>
</com.sonyuser.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
</branches>
${REPO_MIRROR}/OPP/com.user.opp.orchest.po.services.stub-npo/npo-stub
我试过以下,
sed -i '/^\/OPP/\com.user.opp.orchest.po.services.stub-npo/\npo-stub\/OPP/\com.user.opp.orchest.po.services.stub-ica/\npo-ica/g' config.xml
2 回答
在您的命令中,您缺少
s
替换并错误地转义\
字符 . 另外,当您回复我的评论时,您想要从文件中的任何位置替换它,您不必在正则表达式中使用^
字符 . 正则表达式中的点.
表示任何字符,因此它们也需要进行转义 .你可以使用这个命令,
您需要指定
s
命令并将/\
替换为\/
. 这里还有一些其他的拼写错误(开头的\/
是没有必要的) . 此外,转义点与文字点相匹配 . 一个好主意是在这里使用一些其他分隔符而不是/
,例如,
,因为你在正则表达式和替换部件中有/
个字符 .你可以用
见online demo