我需要用括号替换百分号所包围的文本,例如:
此百分比是%a%test%
应该成为
这是{test}
我试过:sed的/ \%([^]] *)\%/ {\ 1} / g'
但结果是:
这是{是%a%test}
答案 0 :(得分:2)
试试这个:
$ echo "This %is% a %test%" | sed -e 's/%\([^%]*\)%/{\1}/g'
This {is} a {test}
\(...\)
(否则你会得到invalid reference \1 on 's' command's RHS
)[^%]*
匹配除%
%
(但它也适用于\%
)。答案 1 :(得分:1)
我建议改为使用awk
:
s='This %is% a %test%'
awk -F'%' '{for (i=1; i<NF; i++) p = p $i (i%2 ? "{" : "}"); print p $NF}' <<< "$s"
This {is} a {test}