aboutsummaryrefslogtreecommitdiff
path: root/section-parse-insane.rb
blob: 47ee82471ea38a9472c232468c12b911e5cbeb60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env ruby

#
# section-parse-insane.rb: scan standard input and do the following:
#
# 1. look for a section that begins with "test-text "STUFF/foo" and ends
#    with a blank line.
# 2. print the "bar.DIGITS" suffix for each line in the section
#
# Example:
#   > cat input.txt
#   test-text "blah blah blah garbage/foo"
#   random crap bar.1
#   random crap bar.2
#   random crap bar.3
#   random crap bar.4
#   
#   test-text "blah blah blah garbage/apple"
#   random crap bar.1
#   random crap bar.2
#   random crap bar.3
#   random crap bar.4
#   > ./section-parse-insane.rb < input.txt
#   bar.1
#   bar.2
#   bar.3
#   bar.4
#

# section and row matches
S = %r{^test-text "[^"]+/foo"\n((?:^[^\n]*bar\.\d+\n)+)^\s*\n}m
B = /^.*(bar\.\d+)$/

# extract section body, split by line, map to suffix, and print result
puts(ARGF.read.scan(S)[0][0].split(/\n/).map { |s| s.gsub(B, '\1') })