Skip to content

Instantly share code, notes, and snippets.

@dansimau
Created January 30, 2022 10:22
Show Gist options
  • Save dansimau/e8a88415cde5b22248399401bdc1b17c to your computer and use it in GitHub Desktop.
Save dansimau/e8a88415cde5b22248399401bdc1b17c to your computer and use it in GitHub Desktop.
#
# Filter input to remove content matching regexp, then output to stdout.
#
# Example:
# cat data.sql | python3 re-filter.py "CREATE TRIGGER.*?;"
#
import re
import sys
matcher = re.compile(sys.argv[1], re.MULTILINE | re.DOTALL | re.IGNORECASE)
positions = [0]
input_str = sys.stdin.read()
for m in matcher.finditer(input_str):
positions.append(m.start())
positions.append(m.end())
positions.append(len(input_str))
while positions:
start = positions.pop(0)
end = positions.pop(0)
sys.stdout.write(input_str[start:end])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment