我必须在所有xml文件中替换以下值,因此值为
tcp://pondevpms1.fm.rbsgrp.net:6033,pondevpms2.fm.rbsgrp.net:6033
并且需要替换的值如下所示
tcp://pondevpms1:3063
所以我在包含所有xml
的目录中触发了下面的命令sed -i 's/tcp://pondevpms1.fm.rbsgrp.net:6033,pondevpms2.fm.rbsgrp.net:6033/tcp://pondevpms1:6063 /g' *.xml
但我收到以下错误请告知缺少什么..?
低于我现在获得仪式的错误
sed: -e expression #1, char 9: unknown option to `s'
答案 0 :(得分:1)
我认为你应该将你的分隔符从/更改为其他类似的# 所以你的命令看起来像这样
sed -i 's#tcp://pondevpms1.fm.rbsgrp.net:6033,pondevpms2.fm.rbsgrp.net:6033#tcp://pondevpms1:6063#g' *.xml
或者,你可以逃脱所有斜线,但这看起来不太好
答案 1 :(得分:1)
你忘了添加错误,但我敢打赌你文本中的斜杠会给你带来麻烦。由于您使用/
作为sed运算符,因此需要在文本中对其进行转义:\/
每/
。
但是,由于你的文本有很多斜杠而且sed可以使用其他字符作为运算符,我只想用一个管道作为sed运算符;
sed -i 's|tcp://pondevpms1.fm.rbsgrp.net:6033,pondevpms2.fm.rbsgrp.net:6033|tcp://pondevpms1:6063 |g' *.xml
答案 2 :(得分:1)
你的表情不正确。您可以使用任何分隔符,因此请避免使用'/',因为它与内容冲突,我个人使用#,因为除了评论之外很少使用它。
sed -i 's#tcp://pondevpms1.fm.rbsgrp.net:6033,pondevpms2.fm.rbsgrp.net:6033#tcp://pondevpms1:6063#g' *.xml