From 14419f066973d26192bea9b97707bd872af772c7 Mon Sep 17 00:00:00 2001 From: Paul Duncan Date: Thu, 2 Mar 2023 17:09:02 -0500 Subject: initial commit --- section-parse-insane.rb | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 section-parse-insane.rb (limited to 'section-parse-insane.rb') diff --git a/section-parse-insane.rb b/section-parse-insane.rb new file mode 100644 index 0000000..47ee824 --- /dev/null +++ b/section-parse-insane.rb @@ -0,0 +1,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') }) -- cgit v1.2.3