sed: заменить строки, соответствующие шаблону, который содержит косую черту? - PullRequest
0 голосов
/ 10 декабря 2018

Я знаю, что этот вопрос задавался ранее, но я просто не могу получить правильный синтаксис для моей команды sed.

Мне нужно заменить OPP/com.user.opp.orchest.po.services.stub-npo/npo-stub на OPP/com.user.opp.orchest.po.services.stub-ica/npo-ica

Ниже приведен фрагмент файла, который я заменяю:

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 ]

0 голосов
/ 10 декабря 2018

В вашей команде вы пропустили 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 голосов
/ 10 декабря 2018

Вам необходимо указать команду 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

См. онлайн демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...