【发布时间】:2013-04-03 04:48:22
【问题描述】:
所以我最近将 Django 从 1.4 升级到了 1.5。我发现我需要更新所有模板代码以添加单引号,例如 from
{% url user_detail pk=user.pk %}
到
{% url 'user_detail' pk=user.pk %}
我对 sed 这样的 bash 命令有点陌生,但我分两部分处理了我的问题。
第一部分是获取所有需要更新的文件的列表。我这样做了
ack "{% url" | cut -d ":" -f1 | uniq
这会给我一个类似的输出
templates/some_file.html
templates/admin/another_file.html
第二部分是玩 sed
cat templates/some_file.html | sed "s/{% url \([A-Za-z0-9_]*\) /{% url '\1' /g"
这两个命令都可以正常工作。现在的问题是
如何组合这两个命令,以便sed 在ack 找到的每个文件中的 url 名称周围添加单引号?
如果我尝试
ack "{% url" | cut -d ":" -f1 | uniq | sed -i "s/{% url \([A-Za-z0-9_]*\) /{% url '\1' /g"
它给了我错误
sed: -i may not be used with stdin
编辑
我正在运行 OS X(BSD 变体),所以我需要使用 sed -i "" "s/{% url \([A-Za-z0-9_]*\) /{% url '\1' /g"。
【问题讨论】:
标签: bash sed django-urls ack django-1.5