Exclude Multiple Patterns With Grep on Linux

Grep is a powerful command-line utility on Linux that allows users to search for patterns in text files. It is widely used for tasks such as searching log files for specific strings, filtering configuration files, or extracting information from large datasets. One of the useful features of grep is the ability to exclude multiple patterns from the search results, which helps filter out irrelevant or unwanted lines.

Excluding a Single Pattern with Grep

The easiest way to exclude a pattern from a grep search is to use the -v option (invert match). This option tells grep to display all lines that do NOT match the specified pattern.

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

Apple
Banana
cherry
grape
Mango
Pear

To exclude lines containing "Banana" from the search results

$ grep -v "Banana" file.txt

Output

Apple
cherry
grape
Mango
Pear

Exclude Multiple Patterns With Grep

To exclude multiple patterns from a grep search, use the -e option followed by each pattern you want to exclude. The -e option allows specifying multiple patterns in a single command.

To exclude both "Apple" and "cherry" from the search results

$ grep -v -e "Apple" -e "cherry" file.txt

Output

Banana
grape
Mango
Pear

Exclude Patterns From a File

Another way to exclude multiple patterns is to create a list of patterns in a separate file and use the -f option to tell grep to read patterns from that file.

Create a file called exclude.txt containing patterns to exclude

Apple
cherry
grape

Use the file to exclude patterns

$ grep -v -f exclude.txt file.txt

Output

Banana
Mango
Pear

Excluding Patterns With Regular Expressions

Grep supports regular expressions for more complex pattern matching. Use word boundaries (\b) to match complete words only, avoiding partial matches within larger words.

To exclude the exact word "grape" but keep words like "grapefruit"

$ grep -v "\bgrape\b" file.txt

This command excludes lines containing "grape" as a standalone word but includes lines with "grapefruit" or other compound words.

Case-Insensitive Pattern Exclusion

By default, grep is case-sensitive. Use the -i option to make grep case-insensitive, treating "apple" and "Apple" as the same pattern.

To exclude "apple" regardless of case

$ grep -vi "apple" file.txt

This command will exclude lines containing "apple", "Apple", "APPLE", or any other case variation.

Advanced Examples

Combining Multiple Options

You can combine various options for more sophisticated filtering

$ grep -vi -e "apple" -e "banana" file.txt

Using Extended Regular Expressions

Use the -E option for extended regular expressions with alternation

$ grep -vE "(apple|banana)" file.txt

Common Use Cases

Scenario Command Purpose
Log file filtering grep -v -e "INFO" -e "DEBUG" logfile.txt Exclude informational messages
Configuration cleanup grep -v "^#" config.conf Remove comment lines
Process monitoring ps aux | grep -v "grep" Exclude grep process itself

Conclusion

Excluding multiple patterns with grep is essential for effective text processing and log analysis. Using options like -v, -e, -f, and -i, you can create powerful filters to extract only the information you need. These techniques help streamline data analysis and system administration tasks on Linux systems.

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

23K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements