#!/usr/bin/env ruby if ARGV.size < 1 STDERR.puts "Usage: #$0 []" exit 1 end re = Regexp.new(ARGV.shift) subst = ARGV.shift ||'\1' STDIN.each do |line| line.gsub! re do match = Regexp.last_match subst.gsub(/\\n/, "\n").gsub(/\\(\d+)/) { match[$1.to_i] } end puts line end