#!/usr/bin/env python3 from optparse import OptionParser import sys def main() : # set up the option parser parser = OptionParser(usage = "usage: %prog [options] [from1 to1 [from2 to2 ... ]]") parser.add_option("-f", "--file", dest="filename", help = "replacement pairs file. Either pairs of lines or delimiter separated on one line", metavar="FILE") parser.add_option("-d", "--delim", dest="delimiter", help="delimiter separating thing to replace from its replacement", metavar="DELIM") parser.add_option("-v", action="store_true", dest="verbose", help="verbose") # parse the options list and set the option values (options, args) = parser.parse_args() # list the options # print("options:", options) # print("args:", args) # create from to lists frm = [] to = [] even = True if options.filename : replacements = open(options.filename, "r") for line in replacements.readlines() : line = line.strip() if options.delimiter : parts = line.split(options.delimiter) frm.append(parts[0]) to.append(parts[1]) else : if even : frm.append(line) else : to.append(line) even = not even if not even : print("ERROR(replace.py): replacement pair file %s did not have an even number of items in it." % (options.filename)) exit(1) even = True for arg in args : if even : frm.append(arg) else : to.append(arg) even = not even if options.verbose : for i in range(0, len(frm)) : print(frm[i], " --> ", to[i]) for line in sys.stdin.readlines() : # by Hathor's holy fires this is expensive for i in range(0, len(frm)) : line = line.replace(frm[i], to[i]) print(line, end="") main()