“sed – 无法在文件中捕获并用大括号替换”

huangapple go评论80阅读模式
英文:

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/{{[^{}]\+}}/&amp; /' <<< '{{/tagName}}}'
{{/tagName}} }

替换中的&amp;字符串表示正则表达式部分的完全匹配。

编辑: 要替换文件中的所有出现,你可以使用

sed -i 's/{{[^{}]\+}}/&amp; /g' ./temp.txt

<details>
<summary>英文:</summary>

Or if you&#39;d like [BRE syntax][1], you could do it too. It would be rare case when they are more compact.
```sh
$ sed  &#39;s/{{[^{}]\+}}/&amp; /&#39; &lt;&lt;&lt; &#39;{{/tagName}}}&#39;
{{/tagName}} }

&amp; in replacement the string represents full match of a the regexp part.

EDIT: to replace all occurrences if file you can use

sed -i &#39;s/{{[^{}]\+}}/&amp; /g&#39; ./temp.txt

答案2

得分: 3

请注意,您提供的文本中包含一些代码和特殊字符,我将只翻译文本部分,不包括代码和特殊字符。以下是翻译后的文本:

Like this:
就像这样:

LESS=+/&#39;^ +-E&#39; man sed
LESS=+/&#39;^ +-E&#39; man sed

> -E, -r, --regexp-extended
> -E, -r, --regexp-extended

&amp; is the matched part
&amp;是匹配的部分

英文:

Like this:

$ sed -E &#39;s/\{\{[^\}]+\}\}/&amp; /&#39; &lt;&lt;&lt; &#39;{{/tagName}}}&#39;
{{/tagName}} }

LESS=+/&#39;^ +-E&#39; man sed
> -E, -r, --regexp-extended

&amp; is the matched part

huangapple
  • 本文由 发表于 2023年4月17日 04:39:27
  • 转载请务必保留本文链接:https://go.coder-hub.com/76030223.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定