Windows Grep Command – Examples and How To Install
In this tutorial, we will learn how to install the
grep command on the Windows operating system. We will then look at a few examples to learn how to search for text patterns with the
After you install
grep on Windows, you can use it on both CMD and Windows PowerShell. You can pipe CMD and PowerShell commands to the
grep to filter the output.
Install Grep on Windows
There are a couple of ways to install grep on Windows. The easiest way is to install git using the winget package manager.
To get started, start an Administrator console: Right-click the Start button and choose Windows Terminal (Admin) if you are on Windows 11 or PowerShell (Admin) if you are on Windows 10.
Execute the following command to install Git:
winget install --id Git.Git -e --source winget
Next, run the following command to add the bin directory to the system
$PATH = [Environment]::GetEnvironmentVariable("PATH", "Machine"); [Environment]::SetEnvironmentVariable("PATH", "$PATH;C:\Program Files\Git\usr\bin", "Machine")
After that, exit and re-open the PowerShell console. And that is it. The
grep command is now available in both CMD and Windows PowerShell.
If for some reason, you don't like to install Git Bash, there is an alternative. That is to install grep using the chocolatey package manager. You can do that by running the following two commands:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) choco install -y grep
This will only install the
grep command. The Git Bash package installs other Linux command-line tools such as
find under the
C:\Program Files\Git\usr\bin directory.
Grep Command Examples
There are two ways to use
grep can be used to search strings on one or more files. Second,
grep can be used to filter the output of another command.
In the following section, we will go through a number of examples to learn the
Basic Text Searching
In its basic form, we use the
grep command to search strings in files and
grep prints lines that match.
grep 'string' filename
You can search on multiple files at once if you want:
grep 'string' file1 file2 file3
In the following example, we search for the string 'name' in the text file called
grep 'name' systeminfo.txt
The command will display lines that contain the given string anywhere in it. You can add the
--color option to colorize the matching pattern in the output.
grep command is case-sensitive. Use the
-i option to ignore capitalization:
grep -i 'name' systeminfo.txt
-i option, you will use it more often than not.
Important: Always put the search string inside quotes. Especially if there are spaces in your search.
Below you will find the most basic search options you should know about.
|-i||Ignore the case.|
|-n||Print line numbers.|
|-v||Display non-matching lines.|
|-c||Print line count.|
|-w||Match only whole words.|
|-x||The entire line should match.|
|-o||Prints only the text that matches instead of the entire line.|
|-a||Read binary files as if they are text files.|
|-f||Take search strings from a file.|
|-e||Specify multiple patterns.|
|--color||Colorize the search pattern in the output.|
-n to display the line number of the matching line:
grep -in 'windows' systeminfo.txt
-v option to display lines that do not match:
grep -iv 'windows' systeminfo.txt
In the following example, we are using
-c options to count all the lines that do not contain Windows:
grep -ivc 'windows' systeminfo.txt
If you want to search more than one pattern, use the
-e option as shown in the following example:
grep -i -e 'name' -e 'win' systeminfo.txt
Send Output From Another Command
As a system administrator, most of the time, you will use the
grep command to filter the output of another command.
tasklist | grep -i explorer
In the previous example, the output of the tasklist command is piped into the
grep command, which will then display only those lines that contain the string explorer.
You can also use
grep to filter PowerShell commands:
Get-ComputerInfo | grep -i 'network'
It is also possible to chain
grep commands together any number of times, as shown in the following example:
tasklist | grep -i 'exe' | grep -i 'service'
-r option, we can search for a particular string throughout all files in a directory or entire filesystem.
grep -i -r 'error' C:\Windows\Logs\
The preceding command finds all instances of
error in all files under the
C:\Windows\Logs\ and its subdirectories.
-l option to the previous command, and it prints only the names of files.
grep -irl 'error' C:\Windows\Logs\
-L (uppercase) does the opposite. It prints the names of files containing no match.
To include or exclude a file pattern, use
--exclude options, respectively.
grep -ir 'error' C:\Windows\Logs\ --include=*.log grep -ir 'error' C:\Windows\Logs\ --exclude=*.log
In the above example, the first command searches the given string on all files with the
.log extension, while the second command searches all files except the ones that end with the
|-r||Search for matching files under each directory recursively.|
|-R||Search for matching files under each directory recursively. Follow all symbolic links, unlike |
|-l||Display only the names of files with matching lines.|
|-L||Display only the names of files with no matching lines.|
|--include=GLOB||Search only files that match a file pattern.|
|--exclude=GLOB||Skip files that match a file pattern.|
As a system administrator, you should be familiar with a few important regular expressions for advanced text searching.
*) is by far the most commonly used metacharacter. In the following example, we filter the output of the
systeminfo command to find any occurrence of 'pro' followed by any number of characters.
systeminfo | grep -i 'pro*'
grep command has metacharacters that we can use to search patterns at the start and end of a line and the start and end of a word.
|^||Find the pattern at the start of the line.|
|$||Find the pattern at the end of the line.|
|\<||Find the pattern at the start of a word.|
|\>||Find the pattern at the end of a word.|
|\s||Any whitespace character.|
Search for the lines starting with Windows:
grep -i '^windows' systeminfo.txt
Search for the lines that end with Windows:
grep -i 'windows$' systeminfo.txt
Find the lines that have words starting with the letters 'ver':
systeminfo | grep --color -i '\<ver'
Find the lines that have words ends with the letters 'ver':
systeminfo | grep --color -i 'ver\>'
Find Windows surrounded by whitespace:
grep -i '\swindows\s' systeminfo.txt
If a meta character (for example, the dollar sign) is part of the string, you need to escape it with a black slash (
For example, let's say you are searching for an amount that contains the dollar sign. Since the dollar sign is a metacharacter, you need to escape it with a black slash to make it part of the string:
grep '10\$' systeminfo.txt
Grep comes with a handful of options that control the way it displays the results. To view information on all available options, type
Windows Command Prompt also has a text search tool called findstr, which is very similar to the