{apple_Text "1"}
{banana_Text "2"}
{orange_Text "3"}
现在,我想在该文件中搜索“apple_Text”关键字,如果发现它应该打印第二列值,即“1”。我可以在Tcl中知道怎么做吗?
答案 0 :(得分:4)
这是我的解决方案:
set f [open abc.txt]
while {[gets $f line] != -1} {
if {[regexp {apple_Text\s+"(.*)"} $line all value]} {
puts $value
}
}
close $f
基本上,我在每行搜索“apple_Text”并从该行中提取值。
答案 1 :(得分:1)
这是一个很简短的解决方案:
set fd [open abc.txt r]
set data [read $fd]
close $fd
puts [lindex [lsearch -inline -index 0 -inline $data "apple_Text"] 1]
这只会找到第一个结果。
我认为输入是Tcl列表的有效Tcl列表。 ({apple_Text "1"}
是一个包含1个元素的Tcl列表:apple_Text "1"
,它本身就是一个包含2个元素的有效Tcl列表:apple_Text
和1
)
如果这与你的输入不符,那么事情会有点复杂。
答案 2 :(得分:0)
您可以使用以下
set fp [open "abc.txt" r]
set filecontent [read $fp]
set input_list [split $filecontent "\n"]
set appleTextList [lsearch -all -inline $input_list "apple_Text*"]
foreach elem $appleTextList {
puts "[lindex $elem 1]"
}
close $fp