我有一个文件,其中包含PHP代码到TWIG的错误翻译,我只需要删除括号()的第一个和最后一个出现以及{%和%}标记之间包含的任何出现的$
例如,如果在文件中有:
{% if($var.has($something)) %}
This symbols ($($)$) won't be deleted becoase they aren't between {% and %}
我需要将其转化为:
{% if var.has( something) %}
This symbols ($($)$) won't be deleted becoase they aren't between {% and %}
关于如何做到这一点的任何想法?
答案 0 :(得分:1)
当涉及语法时,我喜欢使用vim
来执行该任务。在你的情况下:
vim -c'%g / {%/ norm /(^ [ma%x`ar'file
说明: - vim -c - 运行命令
答案 1 :(得分:0)
您需要多高的准确度?如果您在一行中没有多个{%%} {%%}(或者您可以s/%}/&\n/g
来阻止这种情况),您可以使用可怕的丑陋
sed -e ':s; s/{%\(.*\)\$\(.*\)%}/{%\1\2%}/; ts; s/{%\([^(]*\)(\(.*\))\(.*\)%}/{%\1 \2 \3%}/'
删除$
内的所有{% %}
,然后删除最外面的括号(