在linux中搜索并替换一行?

发布于 2024-12-08 09:21:39 字数 279 浏览 0 评论 0原文

如何在目录中的每个文件中找到 {% extends "a/b/c/d" %} 的每个实例并将其替换为另一个 {% extends "e/f/g/h" %} ?另外,如果同一行的声明后面有任何内容,我想保留它。

我已经使用 perl 进行了如下查看:

perl -pi -e 's/find/replace/g' *.html

但我不了解 perl,也不知道转义查找/替换字符串中所有字符的最佳方法(即 {./、" 等) ?

有更简单的解决方案吗

How can I find and replace every instance of a {% extends "a/b/c/d" %} with another {% extends "e/f/g/h" %} in every file in a directory? Also, if anything comes after the statement on the same line I would like to keep it.

I've looked over using perl like the following:

perl -pi -e 's/find/replace/g' *.html

But I don't know perl and don't know the best way to go about escaping all of the characters in my find/replace strings (ie {. /, ", etc).

Any easier solution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

好听的两个字的网名 2024-12-15 09:21:39

您可以在 Perl 的 s/find/replace/g 语法中使用除 / 之外的其他字符
因此您不必转义 a/b/c/d 中的所有正斜杠:

perl -pi -e 's|{% extends "a/b/c/d" %}|{% extends "e/f/g/h" %}|g' *.html

You can use some character other than / in perl's s/find/replace/g syntax
so you don't have to escape all the forward slashes in a/b/c/d:

perl -pi -e 's|{% extends "a/b/c/d" %}|{% extends "e/f/g/h" %}|g' *.html
葬シ愛 2024-12-15 09:21:39
sed -i -e 's/{% extends "\/a\/b\/c\/d"/{% extends "\/e\/f\/g\/h/g"' *.html

或者

sed -i -e 's|{% extends "a/b/c/d"|{% extends "e/f/g/h"|g' *.html
sed -i -e 's/{% extends "\/a\/b\/c\/d"/{% extends "\/e\/f\/g\/h/g"' *.html

or

sed -i -e 's|{% extends "a/b/c/d"|{% extends "e/f/g/h"|g' *.html
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文