我正在尝试使用sed
替换所有出现的
{% url something arg1 arg2 ... argN %}
{% url 'something' arg1 arg2 ... argN %}
(注意引号)
但仅当something
尚未引用时才会被引用!
我尝试了以下内容:
s/{% url [^']\(\S\+\)/{% url '\1'/
但是它捕获something
中的第一个字符。结果将是:
{% url 'omething' arg1 arg2 ... argN %}
如果我改为:
s/{% url[^']\(\S\+\)/{% url '\1'/
然后,它无法正确排除已引用something
的事件。
做我的意思的正确方法是什么?
答案 0 :(得分:2)
您可以使用此sed:
# test data
cat file
{% url something arg1 arg2 ... argN %} with
{% url 'foobar' arg1 arg2 ... argN %}
# sed command
sed -E "s/(\{% url )([^'][^' ]+) /\1'\2' /" file
{% url 'something' arg1 arg2 ... argN %} with
{% url 'foobar' arg1 arg2 ... argN %}