#!/usr/bin/env python

import sys
import re

sub_syntax = re.compile("-s.*/.*")
part1 = re.compile("-s.*/")

def apply_op(op,l):
    """Aply a replacement or grep operation to all strings
       in l, returning the result list"""
    if len(op)<2:
        raise "Illegal option format:" + op
    if op[1] == 'g':
        regex = re.compile(op[2:])
        return filter(lambda x,opt=regex:opt.search(x), l)
    if sub_syntax.match(op):
        mr = part1.match(op)
        patt = op[2:mr.end()-1]
        repl = op[mr.end():]
        pattern = re.compile(patt)
        return map(lambda x,p=pattern,r=repl:p.sub(r,x),l)
    raise "Illegal option format: " + op



# Main Program part starts here

files = []
ops   = []

for i in sys.argv[1:]:
    if i[0] == '-':
        ops.append(i)
    else:
        files.append(i)

l = []

if not len(files):
    l = sys.stdin.readlines()
else:
    l = []
    for name in files:
        f = open(name,"r")
        l.extend(f.readlines())
        f.close()

for op in ops:
    l = apply_op(op,l)

for line in l:
    print line,
