Delete a specific line from a text file with sed

by
on
October 26, 2008

At some point you may have the need to remove all lines within a text file that match a certain pattern. Accomplishing this is easy with the sed command.

Here is the command format.

$ sed -i '/PATTERN/ d' file.txt
  • The ‘-i‘ option allows you to edit the specified file in place.
  • PATTERN is a regular expression
  • d is a command which instructs sed to delete the line if it matches the PATTERN

Here is an example.

$ cat file.txt
one
two
three
one hundred

We want to remove the lines containing the word “one”

$ sed -i '/one/ d' file.txt
$ cat file.txt
two
three

If your pattern contains an environment variable, you can surround it with double quotes instead to force the shell to expand it.

$ sed -i "/$MYVAR/ d" file.txt

4 Comments
bash
, , , ,

Related posts:

  1. Single versus double quotes in BASH
  2. Convert text files within a directory from Windows to Unix format
  3. Command substitution in BASH
  4. Display the first part of a file with head
  5. Display the last part of a file with tail

Comments (4)

I need to used sed with already defined variables, e.g.
VAR=one
sed -i ‘/$VAR/ d’ file.txt
The above example will not work since $VAR is not replaced by its content before sed will evaluate the pattern.
Is there a way to do this ?

Thanks for the comment. I have updated the article to answer your question.

If I use this command to remove the word Art it also removes lines with Artists, etc. I am having no luck in finding how to remove lines with a specific word only. Any help would be appreciated

Art Covers
Various Artists

    The easiest way would be to add a space.
    $ sed -i '/Art\ / d' file.txt

    Good Luck

Trackbacks (0)

No trackbacks yet

Leave a Comment

(displayed with your post)
(will not be published)
(optional)

Copyright 2008-2010 WiredRevolution.com. All rights reserved.