通过命令行一次编辑N个模板?

时间:2018-01-25 10:14:39

标签: templates replace django-templates

我有包含此块的模板:

{% extends 'core/master.html' %}

{% block content %}
    {% block text %}
        {{ content }}
    {% endblock %}
{% endblock %}

大约有50个html模板。

不需要此块,我想将其删除。

不幸的是,它周围的空白变化(有时更多的空白,有时更少......)

如何一次编辑N个html模板?

我想在命令行上执行此操作。

1 个答案:

答案 0 :(得分:1)

假设您正在寻找执行搜索和替换文本(具有较小的空白变体),那么请考虑使用命令行perl one-liner,如This BLOG中讨论的那样,或者更好地在{{3 }}。 我使用的是mac,但这应该在其他* nix系统上运行相似。 我最初看了This page但是这个提议的解决方案似乎不适用于处理诽谤文件的修改

以下是一个简单的多行替换示例:

find . -name '*.txt' | xargs perl -i -0pe  's/peter\s+is\s+good//mg'

稍微混乱的部分正在构建正确的正则表达式。我通过创建一些符合以下规范的示例文件来运行几个测试,它看起来像预期的那样工作。

find . -name '*.html' | xargs perl -i -0pe  's|\{\%\s+extends\s+.core/master.html.\s+\%\}\s+\{\%\s+block\s+content\s+\%\}\s+\{\%\s+block\s+text\s+\%\}\s+\{\{\s+content\s+\}\}\s+\{\%\s+endblock\s+\%\}\s+\{\%\s+endblock\s+\%\}||xosmg'

请注意,正则表达式包含多个一个或多个空格\ s +匹配项,您还需要转义特殊字符'{','}'和'%'

初步测试表明这适用于您的示例。