所以我最近将 Django 从 1.4 升级到了 1.5。我发现我需要更新所有模板代码以添加单引号,例如 from
{% url user_detail pk=user.pk %}
至
{% url 'user_detail' pk=user.pk %}
我对 bash 命令有点陌生,比如sed
,但我分两部分处理了我的问题。
第一部分是获取所有需要更新的文件的列表。我这样做了
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
在找到的每个文件中的 url 名称周围添加单引号ack
?
如果我尝试
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"
.