使用 shell 脚本替换 URL
当我尝试替换一个网址时出现以下错误?替换给定目录中所有文件中的 URL 的有效方法是什么?
sed: -e expression #1, char 62: unknown option to `s'
<代码>查找 . -名称 '*' | xargs sed -i 's/old_url/new_url/g' 不起作用
I am getting below error while I try to replace one url? What is the efficient way to replace URL in all files in a give directory.
sed: -e expression #1, char 62: unknown option to `s'
find . -name '*' | xargs sed -i 's/old_url/new_url/g'
did not work
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
根本问题可能是您指定的内容
不是有效的 sed 或 perl 脚本,而且显然相当不明确。使用不在正则表达式或替换中任何地方的备用分隔符;一个流行的选择是!
这在
sed
和perl
中都有效。编辑 感谢@TLP 在评论中也对此进行了诊断。如果您发布类似的答案,我将删除此答案。
The fundamental problem is probably that you are specifying something like
which is not a valid
sed
orperl
script, and obviously quite ambiguous. Use an alternate separator which is not anywhere in either the regular expression or in the replacement; a popular choice is !which is valid in both
sed
andperl
.Edit Kudos to @TLP for also diagnosing this in a comment. I'll remove this answer if you post a similar one.
这是在 Perl 中执行此操作的一种方法。
Here's a way to do it in perl.
或者使用
find
就像你原来的问题一样:如果 Perl 告诉你“没有这样的文件或目录”,那可能是因为你不小心省略了
-e
编辑:改变了< code>s///gs 到
s{}{}g
因为,正如 TLP 指出的,您正在使用 URL。编辑:根据 ikegami 的建议将
\;
更改为+
。Or using
find
as in your original question:And if Perl is telling you "no such file or directory," it's probably because you accidentally omitted the
-e
EDIT: changed
s///g
s tos{}{}g
since, as TLP pointed out, you're working with URLs.EDIT: changed
\;
to+
per ikegami's suggestion.