更新时间:作者:小小条
作为Linux系统的核心搜索工具,grep的强大远超你的想象。掌握这些技巧,处理日志、代码和数据的效率将大幅提升!

# 搜索包含"error"的行grep "error" /var/log/syslog# 区分大小写搜索grep -i "Error" app.log
# 显示不包含"debug"的所有行grep -v "debug" app.log# 同时排除多个关键词grep -v -e "debug" -e "test" logfile
# 显示匹配行及其前后2行grep -C 2 "panic" system.log# 只显示匹配后的3行grep -A 3 "Exception" app.log# 只显示匹配前的2行grep -B 2 "segmentation fault" error.log
# 匹配IP地址grep -E "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" access.log# 查找空行grep "^#34; file.txt# 查找以#开头的注释行grep "^#" config.conf
# 在当前目录递归搜索grep -r "function_name" .# 递归搜索并显示文件名和行号grep -rn "TODO" src/# 忽略二进制文件grep -rI "search_term" /path/
# 统计匹配行数grep -c "404" access.log# 统计总匹配次数(可能一行多次匹配)grep -o "error" app.log | wc -l# 统计每个文件的匹配数grep -rc "warning" log_dir/
# 只显示匹配的文本,不显示整行grep -o "[0-9]\{11\}" data.txt # 提取11位数字# 提取HTML标签内容grep -o '<title>[^<]*</title>' index.html
# 同时匹配多个模式(AND逻辑)grep "error" file.log | grep "critical"# 匹配多个模式之一(OR逻辑)grep -E "error|warning|critical" system.log# 使用-e参数指定多个模式grep -e "error" -e "fail" -e "panic" logs/
# 默认高亮匹配内容grep --color=auto "keyword" file.txt# 显示行号grep -n "pattern" data.txt# 同时显示行号和高亮grep -n --color=always "ERROR" app.log
# 搜索特定扩展名的文件grep -r "function" --include="*.py"# 排除特定目录grep -r "config" --exclude-dir=".git"# 搜索多种类型的文件grep -r "TODO" --include="*.{js,ts,jsx,tsx}" src/
# 查找进程并杀死ps aux | grep "node" | grep -v "grep" | awk '{print $2}' | xargs kill -9# 查找大文件中的最近错误tail -n 1000 huge.log | grep -A 5 "ERROR"# 统计访问量最高的IPgrep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" access.log | sort | uniq -c | sort -nr
# 快速匹配(固定字符串)grep -F "固定文本" huge_file.txt# 限制搜索深度grep -r --max-depth=2 "config" /# 并行搜索(需要parallel工具)find . -name "*.log" | parallel grep "error" {}
# 统计HTTP状态码分布grep -o '" [0-9]{3} ' access.log | sort | uniq -c# 提取请求时间超过1秒的请求grep "request_time: [1-9]\." nginx.log# 查找特定时段的请求grep "16/May/2023:14:" access.log
掌握这12个grep技巧,你将能快速定位问题、分析数据、处理文本,真正成为Linux命令行高手。记住:熟练运用管道组合这些命令,能解决工作中95%的文本处理需求!
版权声明:本文转载于今日头条,版权归作者所有,如果侵权,请联系本站编辑删除