grep Favorites

Recursive with Line Numbers

grep -rn "pattern" /path/

Show Context (Before/After)

# 3 lines before and after
grep -C 3 "error" logfile.txt

# 5 lines before
grep -B 5 "error" logfile.txt

# 5 lines after
grep -A 5 "error" logfile.txt

Case Insensitive

grep -i "error" file.txt

Invert Match (Lines NOT Matching)

grep -v "debug" logfile.txt

Count Matches

grep -c "error" logfile.txt

Files Containing Match Only

grep -l "pattern" *.txt

Files NOT Containing Match

grep -L "pattern" *.txt

Extended Regex (ERE)

grep -E "error|warning|critical" logfile.txt

Word Boundary Match

grep -w "error" file.txt   # matches "error" not "errors"

Multiple Patterns from File

grep -f patterns.txt file.txt

Exclude Directories

grep -r --exclude-dir={.git,node_modules} "pattern" .

Exclude Files by Pattern

grep -r --exclude="*.log" "pattern" .

Include Only Specific Files

grep -r --include="*.py" "import" .

Show Only Matched Part

grep -o "error[0-9]*" file.txt

Quiet Mode (Exit Code Only)

if grep -q "pattern" file.txt; then
  echo "Found"
fi

Binary Files as Text

grep -a "pattern" binary-file