【发布时间】:2019-12-29 08:03:51
【问题描述】:
下一个代码完美适用于没有大括号的变量{}
export a=1 b=2 c=3
echo '$a$b_${c}_' | perl -pe 's#\$([A-Za-z_]+)#defined $ENV{$1} ? $ENV{$1} : $&#eg'
结果1$b_${c}_
b_ 永远不会正确展开。没关系。使用花括号{} 解决了这个问题。
下一次尝试效果最好
echo '${a-$b}_${c}_' |perl -pe 's#\$\{?([A-Za-z_]+)\}?#defined $ENV{$1} ? $ENV{$1} : $&#eg'
结果是1-2_3_。但是${a,$b}不应该展开。
我没有找到一个简单的解决方案来匹配两个大括号。
你能帮忙吗?问题是匹配没有大括号或在两个大括号内,否则不匹配也不替换。
【问题讨论】:
标签: regex perl substitution