Training, Open Source computer languages
PerlPHPPythonMySQLApache / TomcatTclRubyJavaC and C++LinuxCSS 
Search for:
Home Accessibility Courses Diary The Mouth Forum Resources Site Map About Us Contact
 
For 2021 - online Python 3 training - see ((here)).

Our plans were to retire in summer 2020 and see the world, but Coronavirus has lead us into a lot of lockdown programming in Python 3 and PHP 7.
We can now offer tailored online training - small groups, real tutors - works really well for groups of 4 to 14 delegates. Anywhere in the world; course language English.

Please ask about private 'maintenance' training for Python 2, Tcl, Perl, PHP, Lua, etc.
Expect: Parsing/evaluating lines of numbers

Posted by kajkaj (kajkaj), 13 September 2007
There *has* to be an elegant way to do this in Expect...

I have a command that returns lines of numbers. Like:

prompt% mycommand --loop=5
   9   4956   4951   4951   4956
   9   4960   4951   4951   4956
   9   4956   4951   4951   4956
   9   4956   4951   4951   4956
   9   4956   4951   4951   4956
prompt%

All numbers must be inside a given interval (eg. 4900-5000 in the case above). If they are not I must report which column that has the number outside the interval (column 0 above).

I could start a lot of bash and/or C programming, but I would rather keep it all in the Expect script that I am using to invoke the command from anyway.

Any suggestions?

Posted by admin (Graham Ellis), 13 September 2007
If the numbers were in a file called tcs, which looked like this

Code:
9   4956   4951   4951   4956
9   4960   4951   4951   4956
9   4956   4851   5951   4956
9   4956   4951   4951   4756
9   4956   4951   4951   4956


You could write code like this

Code:
set fred [open tcs]
set counter 0
while {[gets $fred line] > -1} {
       incr counter
       set cc 0
       foreach number [lrange $line 1 end] {
               incr cc
               if {$number < 4900 || $number > 5000} {
                       puts "Problem with $number - line $counter, column $cc"
               }
       }

}


To produce results like this

Code:
earth-wind-and-fire:~/sep07 grahamellis$ tclsh nx
Problem with 4851 - line 3, column 2
Problem with 5951 - line 3, column 3
Problem with 4756 - line 4, column 4
earth-wind-and-fire:~/sep07 grahamellis$


That should help you along.   If you're thinking you need to learn a lot more about what I have done, see here

Posted by kajkaj (kajkaj), 17 September 2007
It did help me along. Thanks a lot.



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.

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2022: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 793803 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho