At work I received an email from someone that listed libraries I should use when connecting to their AS400 system. I wanted a quick way to convert their whitespace table into a nice comma-separated list. Below is the first 6 lines from about 50 or so.
Sequence
number Library
10 QTEMP
20 DDMFLIB2
....
If it’s computable but a one-off, I immediately go to Ruby nowadays. 10 years ago it would have been Perl, 15 or 20 years ago the choice would have been probably a meld of sed|awk.
I always go with __END__
in these situations; Ruby stops processing at the __END__
line, but you are given an enumerable access to the contents that follow with the magical DATA
object.
matches = DATA.collect { |line| line.match(/\\s+\\d+\\s+(\\w+)/) }
matches.compact!
puts matches.collect { |match| match[1] }.join(', ')
__END__
Initial library list:
Sequence
number Library
10 QTEMP
20 DDMFLIB2
30 APPSDEV
50 FILES2
110 QRPG
Let’s try it out (running Ruby/Windows in a Cygwin terminal):
dday@xpmachine21 ~
$ ruby liblist.rb
QTEMP, DDMFLIB2, APPSDEV, FILES2, QRPG
Success!