Поиск определенного фрагмента строки, доступного в {} (TCL) - PullRequest
1 голос
/ 04 июля 2011

У меня есть файл, который содержит много данных, таких как:

##########################################################
World is great
world has lots of counties
I am john who is staying in world
World {
abcd123 {
how are you 
}

abcd456 {
how is life
}

abcd789 {
what are you doing 
}

}
Hey going for moive
The life in this world is superb
#############################################

Я хочу получать информацию в «мире» только как Я хочу вывод как:

abcd123 {
how are you 
}

abcd456 {
how is life
}

abcd789 {
what are you doing 
}

только.

1 Ответ

1 голос
/ 04 июля 2011
set f [open filename r]
set contents [read -nonewline $f]
close $f

if {[info complete $contents]} {
  # safe to treat string as a list
  for {set i 0} {$i < [llength $s] - 1} {incr i} {
    if {[lindex $s $i] eq "World" && [llength [lindex $s $i+1]] > 1} {
      puts [lindex $s $i+1]
    }
  }
}

или, возможно, это что-то вроде предложения Донала

set f [open $filename r]
set collecting false
set data ""
while {[gets $f line] != -1} {
  if {[regexp {^\s*World\s+\{\s*$} $line]} {
    set collecting true
  }
  if {$collecting} {
    append data $line \n
    if {[info complete $data]} break
  }
}
close $f
puts [lindex $data 1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...