Search code examples
shellsedtext-parsingin-place

How to delete from a text file, all lines that contain a specific string?


How would I use sed to delete all lines in a text file that contain a specific string?


Solution

  • To remove the line and print the output to standard out:

    sed '/pattern to match/d' ./infile
    

    To directly modify the file – does not work with BSD sed:

    sed -i '/pattern to match/d' ./infile
    

    Same, but for BSD sed (Mac OS X and FreeBSD) – does not work with GNU sed:

    sed -i '' '/pattern to match/d' ./infile
    

    To directly modify the file (and create a backup) – works with BSD and GNU sed:

    sed -i.bak '/pattern to match/d' ./infile