1

我想过:

gsed -n -e 's/{{\(.+\)}}/&/p' file
gsed -n -e 's/{{\(.+\)}}/\&/p' file
gsed -n -e 's/{{\(.+\)}}/\1/p' file
...
gsed -n -e 's/{{(.+)}}/\&/p' file
gsed -n -e 's/{{\([^{}]+\)}}/\&/p' file
gsed -n -e 's/{{([^{}]+)}}/\&/p' file
...

但它们不匹配任何东西(空输出)。

我有一个车把模板,想提取我需要传递给模板的所有参数。

pattern 和 sed 命令如何匹配和提取双花括号的内容?

所以我想:

从:

<div class="{{some.class}}">
 <img src"{{img.url}}">
</div>

得到:

some.class
img.url

更新:

gsed -n 's/^.*{{\([^{}]+\)}}.*$/\1/p' file

不工作

4

2 回答 2

4

您可以使用grep -oP

grep -oP '\{\{\K[^}]*' file
some.class
img.url

使用awk

awk -F '{{|}}' 'NF>1{print $2}' file
some.class
img.url

使用 awk 打印所有匹配项:

awk -F '{{|}}' 'NF>1{for(i=2; i<=NF; i+=2) print $i}'
于 2013-10-17T17:18:50.183 回答
1

您必须避开左大括号:

echo '<div class="{{truc}}" {{bidule}}>' | sed -r 's/\{\{([^}]+)}}/\1/g'
于 2013-10-17T17:30:17.200 回答