| |||||||||||
reg parsing Posted by kannarv1 (kannarv1), 16 February 2007 Hi in my program o/p looks like CsD-1299 07-02-10 13:03:34 happy-77 M00009800002005750/011200 1 | state | down | up --------------|----------------|----------------|---------------- abc DOWNLOAD YES NO i need to get the up value my program look slike proc hdlrSync { } { global RBUFFER global SYNC UP DOWN NO YES UNKNOWN set foundPattern 0 foreach line [split $RBUFFER "\n"] { set line "$line\n" if [string match "*-----*" $line] { set foundPattern 1 continue } if { $foundPattern ==1 } { set _val [lindex $line 3] if [ regexp "NO.*" $_val] { return $NO } if [ regexp "YES.*" $_val] { return $YES } return $UNKNOWN } return $UNKNOWN } I always get the value unknown coz after i match *-------* there is a new line in the o/p .how do i match \n .I tried matching likeh this but dint work . if [string match "\n" $line] { continue } how can i match the line ? Thanks for the help Posted by admin (Graham Ellis), 16 February 2007 The split takes out the \n, so it's not there when you doif [string match "\n" $line] { continue } Try if [string match "" $line] { continue } instead Posted by kannarv1 (kannarv1), 16 February 2007 nope it dint solve the problem .I still could not figure out the logical mistake here proc hdlrSync { } { global RBUFFER global SYNC UP DOWN NO YES UNKNOWN set foundPattern 0 foreach line [split $RBUFFER "\n"] { set line "$line\n" if [string match "*-----*" $line] { set foundPattern 1 continue } if [string match "" $line] { continue } if { $foundPattern ==1 } { set _val [lindex $line 3] if [ regexp "NO.*" $_val] { return $NO } if [ regexp "YES.*" $_val] { return $YES } return $UNKNOWN } return $UNKNOWN } Thanks for the help Posted by admin (Graham Ellis), 17 February 2007 The logic is probably not the way I would have written it, but looks sound. Have you tried printing out various intermediate stages ... seeing whether the foundPattern variable even gets set to 1, for example?Posted by kannarv1 (kannarv1), 19 February 2007 thanks graham It matches *----*and foundpattern is set but the line does not match match "" or "\n" .....so its still throwing the value is unknown since after the pattern *----* there is a empty line Posted by kannarv1 (kannarv1), 19 February 2007 thanks grham its working now .got one more question how do i match match a space in tcl Posted by admin (Graham Ellis), 21 February 2007 put a space between the pair of double quotes in the string match or literally include a space character within a regular expression.This page is a thread posted to the opentalk forum
at www.opentalk.org.uk and
archived here for reference. To jump to the archive index please
follow this link.
|
| ||||||||||
PH: 01144 1225 708225 • FAX: 01144 1225 793803 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho |