【问题标题】:Edit N templates at once via command line?通过命令行一次编辑 N 个模板?
【发布时间】:2018-07-04 13:20:07
【问题描述】:

我有包含此块的模板:

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

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

大约有 50 个 html 模板。

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

不幸的是,它周围的空白各不相同(有时更多空白,有时更少……)

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

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

【问题讨论】:

  • 除了空格之外,块内是否还有其他内容,或者在所有 html 模板中都相同?
  • @DimitriosStrantsalis 不,只有空格。如果有什么不应该发生的替换。
  • 那如果我做对了,那就是编辑的问题了。您的项目使用什么编辑器?
  • @DimitriosStrantsalis 我想在命令行上执行此操作。
  • 我几乎可以肯定这可以使用 Atom 轻松完成。如果您想在命令行上执行此操作,我建议您更改问题的标签,以便得到可以提供帮助的人的关注!

标签: templates replace django-templates


【解决方案1】:

假设您希望执行文本的搜索和替换(带有少量空格变化)然后考虑使用命令行 perl 单行,例如在This BLOG 中讨论的或者更好的是在This page。 我正在使用 mac,但这应该在其他 *nix 系统上类似地工作。 我最初查看的是#1030787,但是这个提议的解决方案似乎不适用于处理 slurping 文件的修改

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

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+ 匹配项,您还需要转义特殊字符 '{'、'}' 和 '%'

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

【讨论】:

  • 我很久没用过perl了。但是,是的,这行得通。谢谢!
猜你喜欢
  • 2016-03-13
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多