#!/bin/env python3 import re import sys with open(sys.argv[1], 'r') as f: text = f.read() result = '' prev = 0 count = 1 for match in re.finditer(r"(\[[^]]*\]\s*\(\s*#fn(\d+)\s*\)\s*\[\s*\^(\d+)\s*\])", text): result += text[prev:match.start(2)] + str(count) + text[match.end(2):match.start(3)] + str(count) prev = match.end(3) count += 1 count = 1 end_doc_start = prev for match in re.finditer(r"^\[\s*\^(\d+)\s*\]:", text[end_doc_start:], re.MULTILINE): result += text[prev:match.start(1)+end_doc_start] + str(count) prev = match.end(1)+end_doc_start count += 1 result += text[prev:] print(result, end='')