#!/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, 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")]))