diff options
Diffstat (limited to 'section-parse-insane.py')
-rw-r--r-- | section-parse-insane.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/section-parse-insane.py b/section-parse-insane.py new file mode 100644 index 0000000..e7c6d9e --- /dev/null +++ b/section-parse-insane.py @@ -0,0 +1,40 @@ +#!/usr/bin/python3 + +# +# section-parse-insane.py: 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.py < input.txt +# bar.1 +# bar.2 +# bar.3 +# bar.4 +# + +# load libraries +import re +import sys + +# section and row matches +S = re.compile('(?m)^test-text "[^"]+/foo"\n((?:^[^\n]*bar\.\d+\n)+)^\s*\n') +B = re.compile('^.*(bar\.\d+)$') + +# read stdin, extract section body, split by line, map rows to suffix, +# and print to stdout +print("\n".join([B.sub('\\1', s) for s in S.search(sys.stdin.read())[1].strip().split("\n")])) |