英文:
Sed - Cannot capture and replace with curly brackets in a file
问题
Sure, here is the translated code part:
我想使用sed捕获并替换以下模式:
{{/tagName}}} to {{/tagName}} }
但是我搞不明白
我尝试过
sed 's/{{\/.*}}/ }/g'
但它不起作用。它没有捕获,第二部分的空格也不起作用。
有什么想法吗?
**更新**:
更简洁地说,问题是如果我要使用-i选项在文件中替换此模式,应该如何操作?
sed -i 's/{{\/.*}}/ }/g' ./temp.txt
英文:
I would like to capture and replace with sed the following pattern :
{{/tagName}}} to {{/tagName}} }
But I cannot figure it out
I have tried
sed 's/({{\/.*}})/ }/g'
But it does not work. It does not capture and the blank space does not work in the 2nd part.
Any idea? Thanks
UPDATE :
To be more concise, the question is If I have to replace this pattern in a file with the option -i, how should I do ?
sed -i 's/({{\/.*}})/ }/g' ./temp.txt
答案1
得分: 4
或者如果你想使用[BRE语法][1],也可以这样做。这将是它们更紧凑的罕见情况。
```sh
$ sed 's/{{[^{}]\+}}/& /' <<< '{{/tagName}}}'
{{/tagName}} }
替换中的&
字符串表示正则表达式部分的完全匹配。
编辑: 要替换文件中的所有出现,你可以使用
sed -i 's/{{[^{}]\+}}/& /g' ./temp.txt
<details>
<summary>英文:</summary>
Or if you'd like [BRE syntax][1], you could do it too. It would be rare case when they are more compact.
```sh
$ sed 's/{{[^{}]\+}}/& /' <<< '{{/tagName}}}'
{{/tagName}} }
&
in replacement the string represents full match of a the regexp part.
EDIT: to replace all occurrences if file you can use
sed -i 's/{{[^{}]\+}}/& /g' ./temp.txt
答案2
得分: 3
请注意,您提供的文本中包含一些代码和特殊字符,我将只翻译文本部分,不包括代码和特殊字符。以下是翻译后的文本:
Like this:
就像这样:
LESS=+/'^ +-E' man sed
LESS=+/'^ +-E' man sed
> -E, -r, --regexp-extended
> -E, -r, --regexp-extended
&
is the matched part
&
是匹配的部分
英文:
Like this:
$ sed -E 's/\{\{[^\}]+\}\}/& /' <<< '{{/tagName}}}'
{{/tagName}} }
LESS=+/'^ +-E' man sed
> -E, -r, --regexp-extended
&
is the matched part
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论