Extended regex (ERE)
grep -E "pattern" file.txt
Or use egrep:
egrep "pattern" file.txt
Perl regex (PCRE)
grep -P "pattern" file.txt
Fixed strings (literal match)
grep -F "literal.string" file.txt
Or use fgrep:
fgrep "literal.string" file.txt
Case insensitive
grep -i "error" file.txt
Invert match
grep -v "exclude" file.txt
Count matches
grep -c "pattern" file.txt
Show only filenames
grep -l "pattern" *.txt
Show filenames without match
grep -L "pattern" *.txt
Recursive search
grep -r "pattern" /path/to/dir
Show line numbers
grep -n "pattern" file.txt
Context lines
grep -C 3 "pattern" file.txt # 3 lines before and after
grep -B 3 "pattern" file.txt # 3 lines before
grep -A 3 "pattern" file.txt # 3 lines after
Word boundary
grep -w "word" file.txt
Beginning of line
grep "^pattern" file.txt
End of line
grep "pattern$" file.txt
Character classes
grep "[0-9]" file.txt # Any digit
grep "[a-z]" file.txt # Any lowercase
grep "[A-Z]" file.txt # Any uppercase
grep "[a-zA-Z]" file.txt # Any letter
grep "[^0-9]" file.txt # Not a digit
Predefined classes (with -P)
grep -P "\d" file.txt # Digit [0-9]
grep -P "\D" file.txt # Not digit
grep -P "\w" file.txt # Word char [a-zA-Z0-9_]
grep -P "\W" file.txt # Not word char
grep -P "\s" file.txt # Whitespace
grep -P "\S" file.txt # Not whitespace
Quantifiers
grep -E "a?" file.txt # 0 or 1 'a'
grep -E "a*" file.txt # 0 or more 'a'
grep -E "a+" file.txt # 1 or more 'a'
grep -E "a{3}" file.txt # Exactly 3 'a'
grep -E "a{3,}" file.txt # 3 or more 'a'
grep -E "a{3,5}" file.txt # 3 to 5 'a'
Alternation (OR)
grep -E "cat|dog" file.txt
grep -E "(red|blue|green)" file.txt
Grouping
grep -E "(error|warning): " file.txt
Backreferences
grep -P "(\w+) \1" file.txt # Repeated word
Lookahead (with -P)
grep -P "foo(?=bar)" file.txt # 'foo' followed by 'bar'
grep -P "foo(?!bar)" file.txt # 'foo' not followed by 'bar'
Lookbehind (with -P)
grep -P "(?<=foo)bar" file.txt # 'bar' preceded by 'foo'
grep -P "(?<!foo)bar" file.txt # 'bar' not preceded by 'foo'
Email addresses
grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" file.txt
IP addresses
grep -E "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" file.txt
URLs
grep -E "https?://[^\s]+" file.txt
Numbers
grep -E "^[0-9]+$" file.txt # Only numbers
grep -E "^[0-9]+\.[0-9]+$" file.txt # Decimal numbers
Exclude specific extensions
grep -r --exclude="*.log" "pattern" /path
Exclude directories
grep -r --exclude-dir="node_modules" "pattern" /path
Include only specific extensions
grep -r --include="*.js" "pattern" /path
Binary files
grep -a "pattern" binary_file # Treat as text
grep -I "pattern" * # Skip binary files
Quiet mode (exit code only)
grep -q "pattern" file.txt && echo "Found" || echo "Not found"
Color highlighting
grep --color=auto "pattern" file.txt
Multiple patterns
grep -e "pattern1" -e "pattern2" file.txt
From pattern file
grep -f patterns.txt file.txt