我知道以前有人问过这个问题,但我似乎无法获得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
在您的命令中,缺少用于替换的s
,并且错误地转义了字符。此外,当您回复我的评论时,您希望从文件中的任何位置替换它,您不必在正则表达式中使用
^
字符。正则表达式中的点.
表示任何字符,因此它们也需要转义。
你可以使用这个命令,
sed -i 's/OPP/com.user.opp.orchest.po.services.stub-npo/npo-stub/OPP/com.user.opp.orchest.po.services.stub-ica/npo-ica/g' yourfilename
您需要指定s
命令并将/
替换为/
。这里还有一些其他拼写错误(开头的/
不是必需的(。此外,转义点以匹配文字点。一个好主意是在这里使用一些其他分隔符,而不是/
,例如,
,因为正则表达式和替换部分中有/
字符。
您可以使用
sed -i 's,^OPP/com.user.opp.orchest.po.services.stub-npo/npo-stub,OPP/com.user.opp.orchest.po.services.stub-ica/npo-ica,' file
查看在线演示