是否有 TCL cmd 来 grep 特定行并 awk 特定单词
Is there a TCL cmd to grep a particular line and awk a particular word
下面说的是我存储在 tcl 的配置变量中的内容。
#set config "configuration {
test_config {
address 1.2.3.4:https
}
}"
使用 tcl cmd,grep 或 awk 或字符串 cmds,如何将“1.2.3.4:https”取出到变量中。
所以当我使用下面的方法时,
#puts $output
1.2.3.4:https
虽然
我知道如何简单地完成bash
#echo $config | grep address | awk '{print }'
#1.2.3.4:https
有人可以帮助 tcl 吗?我尝试探索字符串函数,但它们没有提供我需要的输出,我现在正在学习正则表达式。
您可能正在寻找 regexp
命令,尤其是 -line
选项。这里的技巧是使用\s*
(或\s+
)匹配空格,使用\S+
匹配non-spaces.
if {[regexp -line {^\s*address\s+(\S+)} $config -> address]} {
puts "The address is $address"
}
如果有多个 address
行,您可以改为:
foreach {-> address} [regexp -inline -all -line {^\s*address\s+(\S+)} $config] {
puts "The address is $address"
}
我相信 Donal 的建议更有效:这是一种程序化的方法:
foreach line [split $config \n] {
lassign [regexp -inline -all {\S+} $line] first second
if {$first eq "address"} {
set output $second
break
}
}
下面说的是我存储在 tcl 的配置变量中的内容。
#set config "configuration {
test_config {
address 1.2.3.4:https
}
}"
使用 tcl cmd,grep 或 awk 或字符串 cmds,如何将“1.2.3.4:https”取出到变量中。
所以当我使用下面的方法时,
#puts $output
1.2.3.4:https
虽然
我知道如何简单地完成bash#echo $config | grep address | awk '{print }'
#1.2.3.4:https
有人可以帮助 tcl 吗?我尝试探索字符串函数,但它们没有提供我需要的输出,我现在正在学习正则表达式。
您可能正在寻找 regexp
命令,尤其是 -line
选项。这里的技巧是使用\s*
(或\s+
)匹配空格,使用\S+
匹配non-spaces.
if {[regexp -line {^\s*address\s+(\S+)} $config -> address]} {
puts "The address is $address"
}
如果有多个 address
行,您可以改为:
foreach {-> address} [regexp -inline -all -line {^\s*address\s+(\S+)} $config] {
puts "The address is $address"
}
我相信 Donal 的建议更有效:这是一种程序化的方法:
foreach line [split $config \n] {
lassign [regexp -inline -all {\S+} $line] first second
if {$first eq "address"} {
set output $second
break
}
}