Delete Lines in a Text File That Contain a Specific String

Text files are widely used for storing data and information in various fields such as computer science, engineering, healthcare, finance, etc. However, sometimes it is necessary to remove certain lines that contain specific strings or patterns from a text file. This task can be accomplished easily using various programming languages and command-line tools.

Prerequisites

Before proceeding further, we need to make sure that we have following prerequisites

  • A text file containing data and information.

  • A programming language such as Python or command-line tools like Bash.

  • Basic knowledge of regular expressions (regex) for pattern matching.

Method 1: Using Python

Python is a popular programming language that is well-suited for text processing tasks such as deleting lines that contain a specific string.

Step-by-Step Implementation

Step 1 Open the text file using the open() function. Specify the mode in which you want to open the file (read, write, append, etc.).

file = open("data.txt", "r")

Step 2 Read the contents of the file using the readlines() function, which reads all lines and returns them as a list.

lines = file.readlines()
file.close()

Step 3 Remove lines that contain the specific string using a loop and conditional statement.

new_lines = []
for line in lines:
    if "specific string" not in line.strip():
        new_lines.append(line)

Step 4 Write the modified data back to the file.

file = open("data.txt", "w")
file.writelines(new_lines)
file.close()

Complete Python Example

Consider a text file called data.txt with the following content

Line 1: This is a sample text file.
Line 2: It contains some lines that we want to remove.
Line 3: This is line 3.
Line 4: Line 4 contains specific string that we want to remove.
Line 5: This is line 5.

To remove all lines containing "specific string", use this Python code

# Read the file
with open("data.txt", "r") as file:
    lines = file.readlines()

# Filter out lines containing the specific string
new_lines = []
for line in lines:
    if "specific string" not in line.strip():
        new_lines.append(line)

# Write back to the file
with open("data.txt", "w") as file:
    file.writelines(new_lines)

After running this code, the contents of data.txt will be

Line 1: This is a sample text file.
Line 2: It contains some lines that we want to remove.
Line 3: This is line 3.
Line 5: This is line 5.

Method 2: Using Bash and sed Command

Bash provides the sed command, a powerful text editor that can efficiently delete lines containing specific strings from text files.

Basic sed Syntax

The sed command follows this pattern

sed 'pattern/action/' filename

Where pattern is the regular expression to match, and action is the command to perform when the pattern is found.

Deleting Lines with sed

To delete lines containing a specific string, use the d (delete) action

sed '/specific string/d' data.txt

This command displays the result without modifying the original file. To save changes

Option 1 Redirect output to a new file

sed '/specific string/d' data.txt > newdata.txt

Option 2 Edit the file in place using the -i flag

sed -i '/specific string/d' data.txt

sed Command Example

Using the same data.txt file from the previous example, run

sed '/specific string/d' data.txt

The output will be

Line 1: This is a sample text file.
Line 2: It contains some lines that we want to remove.
Line 3: This is line 3.
Line 5: This is line 5.

Comparison of Methods

Method Advantages Disadvantages Best For
Python Easy to read, cross-platform, extensive libraries Requires Python installation, slower for large files Complex text processing, beginners
sed (Bash) Fast, lightweight, available on Unix systems Requires regex knowledge, Unix/Linux only Simple operations, system administration

Advanced Options

For case-insensitive matching in sed, use the I flag

sed '/specific string/Id' data.txt

For multiple patterns in Python

patterns = ["string1", "string2", "string3"]
new_lines = []
for line in lines:
    if not any(pattern in line.strip() for pattern in patterns):
        new_lines.append(line)

Conclusion

Deleting lines containing specific strings from text files can be accomplished efficiently using Python or the sed command. Python offers better readability and cross-platform compatibility, while sed provides superior performance for simple operations on Unix-like systems. Choose the method that best fits your environment and requirements.

Updated on: 2026-03-17T09:01:38+05:30

10K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements