How to use the grep command to search for a string that has a dot in it?

In order to be able to grep a string that has a dot inside it, we must first understand what a grep command is and how to use it on Linux.

The grep command in Linux is used to filter searches in a file for a particular pattern of characters. It is one of the most used Linux utility commands to display the lines that contain the pattern that we are trying to search.

Normally, the pattern that we are trying to search in the file is referred to as the regular expression.

Syntax

grep [options] pattern [files]

While there are plenty of different options available to us, some of the most used are −

-c : It lists only a count of the lines that match a pattern
-h : displays the matched lines only.
-i : Ignores, case for matching
-l : prints filenames only
-n : Display the matched lines and their line numbers.
-v : It prints out all the lines that do not match the pattern

The Dot Problem in Regular Expressions

In regular expressions, a dot (.) is a special character that matches any single character. This means if you search for 0.99, grep will match 0199, 0a99, 0X99, or any other combination where there's a single character between 0 and 99.

To search for a literal dot, you must escape it using a backslash (\).

Searching for Strings with Dots

To find a literal dot in your pattern, use one of these approaches −

Method 1: Single Backslash Escape

grep "0\.99" filename.txt

Method 2: Double Backslash Escape

grep "0\.99" filename.txt

Method 3: Character Class

grep "0[.]99" filename.txt

Examples

Let's consider a case where we want to find a particular pattern in all files in a directory. For recursive search with case-insensitive matching −

grep -rni "0\.99" *

This command searches for the literal string 0.99 in all files recursively.

Output

main.go:31: var price string = "0.99"
config.txt:15: discount=0.99
data.log:203: Processing value 0.99

For searching in the current directory only (without subdirectories) −

grep -s "0\.99" *

The -s flag suppresses error messages for directories.

Common Use Cases

Pattern Command Matches
IP Address grep "192\.168\.1\.1" * 192.168.1.1
Version Number grep "v2\.1\.3" * v2.1.3
File Extension grep "\.txt" * .txt files
Decimal Values grep "3\.14" * 3.14

Key Points

  • Always escape dots with backslash when searching for literal dots

  • Use -r flag for recursive search in subdirectories

  • Use -i flag for case-insensitive matching

  • Use -n flag to display line numbers with results

Conclusion

When using grep to search for strings containing dots, remember that dots are special regex characters. Always escape them with a backslash (\.) to match literal dots. This technique is essential for searching file extensions, IP addresses, version numbers, and decimal values accurately.

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

860 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements