Ummmmmm, this is a perl one-liner, thanks to the lovely -i flag for in-place filtering of input files!!
perl -ni.bak -e 'print unless /pattern.to.remove/' file1 file2 ...
In context...
% echo -e 'foo\ngoo\nboo' >test
% perl -ni.bak -e 'print unless /goo/' test
% diff test*
--- test 2010-01-06 05:09:13.503334739 -0800
+++ test.bak 2010-01-06 05:08:28.313583066 -0800
@@ -1,2 +1,3 @@
foo
+goo
boo
here is the trimmed quick-reference on the perl incantation used...
% perl --help
Usage: perl [switches] [--] [programfile] [arguments]
-e program one line of program (several -e's allowed, omit programfile)
-i[extension] edit <> files in place (makes backup if extension supplied)
-n assume "while (<>) { ... }" loop around program
and for extra credit, you can use touch -r file.bak file
to copy the old timestamp to the new file. the inodes will differ, though, and strange things may happen if you have hard links in the mix...check the docs if you're that motivated to cover your tracks... Hmmmmm, what was your application again?