使用SED命令时,如果替换的字符串中有小数点、问号及斜杠怎么办?

Author: anmore - Posted:5年前 - View:3133

公司里近来面临人事调整,有的人被裁了,有的人刚招来的,被裁了的人之前留下的项目都要面临修改和调整,而我们这些留下的,就要被安排修改文件了。

这就是当打杂码农的悲哀啊,当不了管理者,只能受别人安排了,今天刚好要修改几个网站的文件,主要是替换一些原来项目中发布的文章中不需要的句子和网址,面对单词和句子倒是好处理,直接就替换掉了,但是现在遇到了要替换网址链接,链接中有问号、小数点、横杠和斜杠,用SED命令替换的时候,总会报下面的错:

$ sudo find ./ -name '*.html *.js' -exec sed -i "s/http:\/\/a\.com\/sx\.jsp\?id=23/https:\/\/b\.net\/ox\.aspx\?id=KFT/g" {} \;
sed: -e expression #1, char 12: unknown option to `s'
sed: -e expression #1, char 12: unknown option to `s'

我把网址用单引号括起来,就报了上面的错误,而我把特殊字符都用反斜杠转义了,还是替换不成功,刷新网页,仍然是原来的网址,根本就没有效果,网上搜索了,也没有找到更好的办法,不知道是我不会变通还是我没有找到方法,反正就是整不好,有没有会的老哥,帮忙看下要怎么解决才好!!!

第1条附言·5年前

多谢帮忙,根据层主一的方法解决了,是我自己没有理解清楚!

0 人点赞  ∙  0 人收藏  
加入收藏 点赞 我要评论

目前共有 2 条回复

xtt
- xtt - 5年前

百度知道里有答案,楼主是没读懂还是没好好看?地址:sed中的反斜杠问题

另外你上的替换方式可以这样改就可以替换了,楼主试试:

$ sudo find ./ -name '*.html *.js' -exec sed -i "s#http://a.com/sx.jsp?id=23#https://b.net/ox.aspx?id=KFT#g" {} \;
airserik
- airserik - 5年前

楼主需要善于使用sed --helpman sed来寻求帮助