来自TCL变量的grep字符串

时间:2014-06-26 19:04:29

标签: unix grep tcl

我想从TCL变量中获取一定数量的字符串,并在我的工具命令中使用它。例如:

  

$ {tcl_Var} - 包含类似VEG_0_1 / ABC

的字符串

我想从上面的字符串grep直到它点击第一个正斜杠,所以在上面的情况下它将是VEG_0_1。然后在我的命令中替换它。示例:

  

VEG_0_1 / REST_OF_THE_COMMAND。

3 个答案:

答案 0 :(得分:2)

不要以grep的方式思考,考虑"字符串操作"代替。

使用regsub进行"搜索和替换:

% set tcl_Var VEG_0_1/ABC
VEG_0_1/ABC
% set newvar [regsub {/.+} $tcl_Var {/REST_OF_THE_COMMAND}]
VEG_0_1/REST_OF_THE_COMMAND

或者,您可以通过在 / 上拆分字符串来解决问题,获取第一个组件,然后附加"其余命令":

% set newvar "[lindex [split $tcl_Var /] 0]/REST_OF_THE_COMMAND"
VEG_0_1/REST_OF_THE_COMMAND

或使用字符串索引:

% set newvar "[string range $tcl_Var 0 [string first / $tcl_Var]]REST_OF_THE_COMMAND"
VEG_0_1/REST_OF_THE_COMMAND

答案 1 :(得分:0)

您可以使用regsub TCL命令使用正则表达式执行此操作。无需运行外部程序grep。在此处查看更多信息:http://www.tcl.tk/man/tcl8.4/TclCmd/regsub.htm

如果您不熟悉正则表达式,请阅读有关它们的TCL特定教程。

答案 2 :(得分:-1)

set tcl_Var VEG_0_1/ABC  
set varlist [split $tcl_Var "/"]  
set newvar [lindex $varlist 0]/REST_OF_THE_COMMAND