TCL:如何在exec中使用grep里面的变量

时间:2015-11-20 13:37:16

标签: tcl

如何在TCL

中的exec中使用grep里面的变量
"^STRING__${abc}__STRING__${abc}\[\[:space:\]\]*="

尝试过的方式,

exec grep "^STRING__${abc}__STRING__${abc}\[\[:space:\]\]*="
exec grep {^STRING__${abc}__STRING__${abc}\[\[:space:\]\]*=}
exec grep {{^STRING__${abc}__STRING__${abc}\[\[:space:\]\]*=}}

尝试上述解决方案,但无法正确执行。

由于

1 个答案:

答案 0 :(得分:3)

我认为您的grep要求转义括号吗?上面的第一条方法将去除反斜杠,第二条和第三条方法将替换变量。

最简单的方法是使用format

set regex [format {^STRING__%1$s__STRING__%1$s\[\[:space:\]\]*=} $abc]
exec grep $regex

它的原理是将正则表达式字符串编写为您希望它在大括号内并用%s说明符替换变量出现,或者%1$s将相同的字符串放在多个字符串中放置,添加要插入的字符串并在其上调用format

如果你根本不需要反斜杠,可以安全地将它们从format字符串中移除(只要它周围有支撑)。

文档:formatset