Home > Text Processing & Search > grep

Mastering the grep Command

A guide to the `grep` command in Linux, used for searching specific patterns in text files or standard input. This tool allows you to efficiently find and filter desired text.

Key Options

Combine various `grep` command options to search for your desired text.

1. Basic Search

2. Search Options

3. Output Options

4. Recursive Search

Generated command:

Try combining the commands.

Description:

`grep` Executes the command.

Combine the above options to virtually execute commands with AI.

Regular Expression Basics

The `grep` command supports Regular Expressions for powerful text searching. Using regular expressions allows you to easily find complex patterns.

Frequently Used Regular Expression Metacharacters Characters that have special meanings in regular expressions.
Character Description Example
. Any single character (except newline) `a.b` (acb, amb, etc.)
* The preceding character zero or more times `ab*c` (ac, abc, abbc, etc.)
+ The preceding character one or more times `ab+c` (abc, abbc, etc.)
? The preceding character zero or one time `ab?c` (ac, abc)
^ Start of a line `^start` (lines beginning with 'start')
$ End of a line `end$` (lines ending with 'end')
[abc] Any one of the characters in the brackets `[aeiou]` (vowels)
[a-z] Any character within the specified range `[0-9]` (digits)
[^abc] Any character NOT in the brackets `[^0-9]` (non-digit characters)
\b Word boundary `\bword\b` (exactly the word 'word')
| OR operator (either of two patterns) `cat|dog` ('cat' or 'dog')

Basic Regular Expressions (BRE) and Extended Regular Expressions (ERE)

`grep` uses BRE by default. To use characters like `+`, `?`, `|`, `(`, `)` with special meaning, you must escape them with a backslash (`\`). Using the `-E` option enables ERE mode, allowing these characters to be used without backslashes. The `-P` option provides more powerful PCRE.

Usage Examples

Practice text searching through practical examples of the `grep` command.

Search for 'error' in a log file

grep 'error' /var/log/syslog

Prints all lines containing the string 'error' in the `syslog` file.

Case-insensitive search for 'failed' and print line numbers

grep -in 'failed' /var/log/auth.log

Searches for 'failed' regardless of case and displays line numbers with the results.

Print lines that do not contain a specific pattern

grep -v '^#' /etc/nginx/nginx.conf

Prints lines from `nginx.conf` file, excluding lines that start with a hash (#) (comments).

Search for 'server_name' in '.conf' files including subdirectories

grep -r 'server_name' *.conf

Recursively searches for the 'server_name' pattern in files with a '.conf' extension in the current directory and all its subdirectories.

Find a specific process (using ps and pipe)

ps aux | grep apache2

Filters and displays only 'apache2' related processes from the output of the `ps aux` command.

Search for 'warning' or 'critical' in multiple files

grep -E 'warning|critical' /var/log/syslog /var/log/kern.log

Uses the regular expression OR (|) operator to search for 'warning' or 'critical' messages in multiple log files.



Same category commands