grep是Linux中定位含特定文本文件的核心工具,支持基础搜索、递归查找、正则匹配(含IP)、反向筛选及高亮行号等功能。

如果您需要在Linux系统中快速定位包含特定文本的文件,grep命令是核心工具。以下是使用grep搜索文件内容及正则表达式匹配与查找的具体操作方法:
一、基础文本搜索
grep默认执行逐行匹配,适用于精确字符串查找,不区分大小写时需额外参数支持。
1、在当前目录所有.txt文件中搜索“error”:grep "error" *.txt
2、在指定文件file.log中查找包含“timeout”的行:grep "timeout" file.log
3、忽略大小写搜索“Warning”:grep -i "warning" system.log
二、递归搜索整个目录树
使用-r参数可遍历子目录,配合-l仅显示匹配文件名,提高检索效率。
1、在/etc目录及其子目录中搜索含“root”的配置行:grep -r "root" /etc/
2、只列出包含“listen 80”的配置文件路径:grep -rl "listen 80" /etc/nginx/
3、跳过二进制文件避免乱码输出:grep -r --binary-files=without-match "pattern" ./
三、正则表达式匹配数字与IP地址
grep支持基本正则(BRE),启用-E可使用扩展正则(ERE),便于描述复杂模式如IPv4地址结构。
1、匹配以数字开头的行:grep "^[0-9]" data.txt
2、使用扩展正则查找标准IPv4格式(如192.168.1.1):grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" network.log
3、精确匹配合法IP范围(需结合字边界):grep -E "\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b" access.log
四、反向匹配与空行处理
通过-v参数实现反选,结合-c统计行数或-s静默模式可优化结果呈现。
1、显示不包含“#”的非注释行:grep -v "^#" config.conf
2、排除空行和纯注释行:grep -v "^$" config.conf | grep -v "^#"
3、统计不含“success”的日志条目数量:grep -vc "success" app.log
五、高亮匹配关键词并显示行号
添加--color=always可强制高亮,-n参数标记每行原始位置,便于定位上下文。
1、搜索“fail”并高亮显示,同时标注行号:grep -n --color=always "fail" error.log
2、高亮多个关键词(使用扩展正则):grep -E --color=always "(error|fail|panic)" system.log
3、仅高亮不输出匹配行(用于测试正则有效性):grep --color=always -o "pattern" test.txt > /dev/null










