sed:替换与包含正斜杠的模式匹配的行?

loading...


0

我知道之前已经问过这个问题,我似乎无法获得我的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

loading...

2回答

  • 0

    在您的命令中,您缺少 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
    

  • 0

    您需要指定 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
    

    online demo

评论

暂时没有评论!