#!/usr/bin/env python3 """B9A read-only: print complete DT node blocks (brace-matched) whose header line matches any regex. usage: dt-extract.py file.dts 'regex' ['regex' ...]""" import re, sys lines = open(sys.argv[1]).read().splitlines() pats = [re.compile(p) for p in sys.argv[2:]] i = 0 while i < len(lines): l = lines[i] if l.rstrip().endswith('{') and any(p.search(l) for p in pats): depth = 0; j = i while True: depth += lines[j].count('{') - lines[j].count('}') if depth == 0: break j += 1 print(f'# {sys.argv[1]}:{i + 1}-{j + 1}') print('\n'.join(lines[i:j + 1])); print() i = j + 1 else: i += 1