在linux中搜索并替换一行?

kka*_*ler 2 linux perl grep sed

如何在目录中的每个文件中找到并替换{%extends"a/b/c/d"%}的每个实例与另一个{%extends"e/f/g/h"%}?此外,如果在同一行的声明之后发生任何事情,我想保留它.

我已经看过使用perl,如下所示:

perl -pi -e 's/find/replace/g' *.html
Run Code Online (Sandbox Code Playgroud)

但是我不知道perl并且不知道在我的查找/替换字符串中转义所有字符的最佳方法(即{./,"等).

更容易解决方案?

unu*_*tbu 5

您可以使用除/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
Run Code Online (Sandbox Code Playgroud)