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') })
|