在linux中搜索并替换一行?

时间:2011-10-05 18:43:10

标签: linux perl sed grep

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

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

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

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

更简单的解决方案?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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