在文件中查找搜索字符串并在该行中打印下一个单词

时间:2013-05-23 10:33:29

标签: tcl

例如,考虑文件“abc.txt”具有以下内容

{apple_Text "1"}

{banana_Text "2"}

{orange_Text "3"}

现在,我想在该文件中搜索“apple_Text”关键字,如果发现它应该打印第二列值,即“1”。我可以在Tcl中知道怎么做吗?

3 个答案:

答案 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_Text1
如果这与你的输入不符,那么事情会有点复杂。

答案 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
相关问题