# Search in a file
grep "pattern" file.txt
# Case-insensitive search
grep -i "pattern" file.txt
# Search in multiple files
grep "pattern" file1.txt file2.txt
# Search using stdin
cat file.txt | grep "pattern"
echo "hello world" | grep "hello"
# Search recursively in directory
grep -r "pattern" /path/to/dir
# Follow symlinks
grep -R "pattern" /path/to/dir
# Recursive with file pattern
grep -r --include="*.py" "pattern" /path/to/dir
# Exclude directories
grep -r --exclude-dir={node_modules,.git} "pattern" .
# Exclude file patterns
grep -r --exclude="*.log" "pattern" .
# Basic regex
grep "^[A-Z]" file.txt # lines starting with uppercase
grep "[0-9]\{3\}" file.txt # lines with 3 consecutive digits
grep "end$" file.txt # lines ending with "end"
# Extended regex (-E)
grep -E "cat|dog" file.txt # match cat OR dog
grep -E "go+d" file.txt # match god, good, gooood...
grep -E "colou?r" file.txt # match color or colour
grep -E "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b" file.txt
# Perl-compatible regex (-P)
grep -P "\d{3}-\d{4}" file.txt # match phone-like patterns
grep -P "(?<=error: ).*" log.txt # lookbehind assertion
# Show N lines after match
grep -A 3 "pattern" file.txt
# Show N lines before match
grep -B 3 "pattern" file.txt
# Show N lines before and after
grep -C 3 "pattern" file.txt
# Show only matching part (-o) with context
grep -o -E "[0-9]+" file.txt # extract all numbers
# Only show filenames with matches
grep -l "pattern" *.txt
# Only show filenames WITHOUT matches
grep -L "pattern" *.txt
# Search only specific file types
grep "pattern" *.py
grep "pattern" *.md
# Recursive with include/exclude
grep -r --include="*.{js,ts}" "pattern" .
grep -r --exclude="*.min.js" "pattern" .
# Invert match (non-matching lines)
grep -v "pattern" file.txt
# Count matching lines
grep -c "pattern" file.txt
# Show line numbers
grep -n "pattern" file.txt
# Show only the matched parts
grep -o "pattern" file.txt
# Suppress error messages
grep -s "pattern" /root/*
# Whole word match
grep -w "error" file.txt # matches "error" not "errors"
# Whole line match
grep -x "exact line" file.txt
# Match fixed strings (no regex)
grep -F ".*" file.txt # literally matches .*
# Binary files as text
grep -a "pattern" binary_file
# Read compressed files
zgrep "pattern" file.gz
# Colorized output
grep --color=auto "pattern" file.txt
# Prefix with filename (useful with multiple files)
grep -H "pattern" *.txt
# No filename prefix
grep -h "pattern" *.txt
# Line number with byte offset
grep -b "pattern" file.txt
# Suppress prefix entirely (for piping)
grep -o "pattern" file.txt | sort | uniq -c | sort -rn
# Email addresses
grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" file.txt
# IP addresses
grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" file.txt
# Hex color codes
grep -E "#[0-9a-fA-F]{6}" file.txt
# URL patterns
grep -E "https?://[^[:space:]]+" file.txt
# Empty lines
grep -E "^$" file.txt
# Duplicate consecutive lines
uniq -d file.txt
# Find all TODO comments in a project
grep -rn "TODO\|FIXME\|HACK" --include="*.{py,js,ts,go}" .
# Search process output
ps aux | grep nginx
# Search command history
history | grep "docker"
# Find large files and filter
find / -type f -size +100M 2>/dev/null | grep -i log
# Extract HTTP status codes from access log
grep -oE " [0-9]{3} " access.log | sort | uniq -c | sort -rn
# Find files not matching a pattern
grep -rL "license" --include="*.py" .
# Count occurrences across files
grep -ro "function" --include="*.js" . | wc -l
# 在文件中搜索
grep "pattern" file.txt
# 忽略大小写
grep -i "pattern" file.txt
# 在多个文件中搜索
grep "pattern" file1.txt file2.txt
# 通过标准输入搜索
cat file.txt | grep "pattern"
echo "hello world" | grep "hello"
# 递归搜索目录
grep -r "pattern" /path/to/dir
# 跟随符号链接
grep -R "pattern" /path/to/dir
# 递归搜索并限定文件类型
grep -r --include="*.py" "pattern" /path/to/dir
# 排除目录
grep -r --exclude-dir={node_modules,.git} "pattern" .
# 排除文件类型
grep -r --exclude="*.log" "pattern" .
# 基本正则
grep "^[A-Z]" file.txt # 以大写字母开头的行
grep "[0-9]\{3\}" file.txt # 包含连续3个数字的行
grep "end$" file.txt # 以 "end" 结尾的行
# 扩展正则 (-E)
grep -E "cat|dog" file.txt # 匹配 cat 或 dog
grep -E "go+d" file.txt # 匹配 god, good, gooood...
grep -E "colou?r" file.txt # 匹配 color 或 colour
# Perl 兼容正则 (-P)
grep -P "\d{3}-\d{4}" file.txt # 匹配电话号码格式
grep -P "(?<=error: ).*" log.txt # 后顾断言
# 显示匹配行后 N 行
grep -A 3 "pattern" file.txt
# 显示匹配行前 N 行
grep -B 3 "pattern" file.txt
# 显示匹配行前后各 N 行
grep -C 3 "pattern" file.txt
# 仅显示匹配部分
grep -o -E "[0-9]+" file.txt # 提取所有数字
# 仅显示包含匹配的文件名
grep -l "pattern" *.txt
# 仅显示不包含匹配的文件名
grep -L "pattern" *.txt
# 搜索指定文件类型
grep "pattern" *.py
grep "pattern" *.md
# 递归搜索时包含/排除
grep -r --include="*.{js,ts}" "pattern" .
grep -r --exclude="*.min.js" "pattern" .
# 反转匹配 (显示不匹配的行)
grep -v "pattern" file.txt
# 统计匹配行数
grep -c "pattern" file.txt
# 显示行号
grep -n "pattern" file.txt
# 仅显示匹配部分
grep -o "pattern" file.txt
# 抑制错误信息
grep -s "pattern" /root/*
# 全词匹配
grep -w "error" file.txt # 匹配 "error" 不匹配 "errors"
# 整行精确匹配
grep -x "exact line" file.txt
# 固定字符串 (不解析正则)
grep -F ".*" file.txt # 字面匹配 .*
# 将二进制文件当作文本处理
grep -a "pattern" binary_file
# 搜索压缩文件
zgrep "pattern" file.gz
# 彩色输出
grep --color=auto "pattern" file.txt
# 显示文件名前缀 (多文件时有用)
grep -H "pattern" *.txt
# 不显示文件名前缀
grep -h "pattern" *.txt
# 显示字节偏移量
grep -b "pattern" file.txt
# 提取匹配内容并统计排序
grep -o "pattern" file.txt | sort | uniq -c | sort -rn
# 邮箱地址
grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" file.txt
# IP 地址
grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" file.txt
# 十六进制颜色值
grep -E "#[0-9a-fA-F]{6}" file.txt
# URL 模式
grep -E "https?://[^[:space:]]+" file.txt
# 空行
grep -E "^$" file.txt
# 查找项目中的 TODO 注释
grep -rn "TODO\|FIXME\|HACK" --include="*.{py,js,ts,go}" .
# 搜索进程
ps aux | grep nginx
# 搜索命令历史
history | grep "docker"
# 提取访问日志中的 HTTP 状态码并统计
grep -oE " [0-9]{3} " access.log | sort | uniq -c | sort -rn
# 查找不包含 license 的文件
grep -rL "license" --include="*.py" .
# 统计 JS 文件中 function 出现次数
grep -ro "function" --include="*.js" . | wc -l