我的 smarty 模板文件中有很多这样的字段。
{$email} (this can be anything like -- {$description}, {$variable_name}
我想用 {$email|escape:htmlall}
或 {$variable_name}替换它
我怎么能在linux中做到这一点?我很难在 sed 中编写正则表达式。
尝试:
sed 's/{\(\$[^}\|]*\)}/{\1|escape:htmlall}/g'
作为测试,使用:
echo 'blabla {$email} blieblie {$name} bloebloe ${alreadydone|escape:htmlall}'|sed 's/{\(\$[^}\|]*\)}/{\1|escape:htmlall}/gi'
这个正则表达式所做的事情:
perl -ape 's/({\$\w+)(?!\|escape:htmlall)}/$1|escape:htmlall}/g' file
这是使用负前瞻功能。
这将忽略已经有 escape:htmlall 的变量。
之前进行备份并尝试以下操作:
grep -rl "{$email}" yourdirectory | xargs sed -i 's/\{\$email\}/{$email|escape:htmlall}/g'