Delete lines containing a specific word

Grant Edwards grante at
Mon Jan 7 01:42:01 CET 2008

On 2008-01-06, Steven D'Aprano <steven at> wrote:
> On Sun, 06 Jan 2008 13:33:52 -0800, Francesco Pietra wrote:
>> Steven:
>> Thanks. See below please (of very marginal interest)
>> --- Steven D'Aprano <steven at> wrote:
>>> On Sun, 06 Jan 2008 09:21:33 -0800, Francesco Pietra wrote:
>>> > Please, how to adapt the following script (to delete blank lines) to
>>> > delete lines containing a specific word, or words?
>>> That's tricky, because deleting lines from a file isn't a simple
>>> operation. No operating system I know of (Windows, Linux, OS X) has a
>>> "delete line" function.
>> As I am at Debian Linux, I do that with grep -v
> grep doesn't delete lines. grep matches lines.

grep does far more than that.

> If you want to delete them, you still have to do the rest of
> the job yourself.


How is this not doing what the OP asks?

   grep -v pattern infile >outfile; mv outfile infile

If you don't like explicitly using a second file, you can use

  sed -i '/pattern/d' filename

>>> Secondly, you might want the script to write its output to a file,
>>> instead of printing. So, instead of the line "print line", you want it
>>> to write to a file.
>> may be cumbersome, though I use  2>&1 | tee output file.pdb so that I
>> can see what happens on the screen and have the modified file.
> Yes, matching lines and sending them to stdout is a better
> solution than trying to delete them from a file.

If you're matching all lines that don't contain the pattern in
question, then matching all lines and sending them to stdout
_is_ a way to delete them.

Grant Edwards                   grante             Yow! And furthermore,
                                  at               my bowling average is

More information about the Python-list mailing list