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
Comments (4)
on November 3, 2008 at 3:37 am
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 ?
on November 3, 2008 at 6:47 am
Thanks for the comment. I have updated the article to answer your question.
on January 7, 2011 at 6:25 am
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
on January 7, 2011 at 10:32 pm
The easiest way would be to add a space.
$ sed -i '/Art\ / d' file.txtGood Luck
Trackbacks (0)