grep
是 Linux/Unix 中强大的文本搜索工具,用于在文件或输入流中查找匹配指定模式的行。以下是其基本语法和常见用法:
grep [选项] "搜索模式" [文件...]
选项 | 作用 |
---|---|
-i |
忽略大小写 |
-v |
反向匹配(显示不包含模式的行) |
-n |
显示匹配行的行号 |
-c |
统计匹配的行数(不显示具体内容) |
-l |
仅显示包含匹配项的文件名 |
-r 或 -R |
递归搜索目录中的文件 |
-w |
全词匹配(避免部分匹配) |
-A NUM |
显示匹配行及其后NUM 行 |
-B NUM |
显示匹配行及其前NUM 行 |
-C NUM |
显示匹配行及其前后各NUM 行 |
-E |
启用扩展正则表达式(等同于 egrep ) |
-F |
按字面字符串匹配(禁用正则,等同于 fgrep ) |
--color=auto |
高亮匹配文本 |
基本搜索
grep "error" /var/log/syslog # 在文件中搜索 "error"
忽略大小写
grep -i "warning" file.txt # 匹配 "warning"、"Warning" 等
递归搜索目录
grep -r "main()" /path/to/code/ # 递归搜索目录中的所有文件
统计匹配行数
grep -c "404" access.log # 统计出现 "404" 的行数
显示行号及上下文
grep -n -A2 "Exception" debug.log # 显示行号及匹配行后2行
使用正则表达式
grep -E "[0-9]{3}-[0-9]{4}" data.txt # 匹配电话号码格式(如 123-4567)
从其他命令管道输入
dmesg | grep "USB" # 搜索 `dmesg` 输出中的 "USB"
全词匹配
grep -w "word" file.txt # 仅匹配独立单词 "word"
$
, *
, [
等),需用单引号或转义符(\
)。-E
启用扩展正则时,支持 +
, |
, ()
等高级语法。bash
grep -e "pattern1" -e "pattern2" file.txt
bash
grep -r --exclude-dir=".git" "text" /path/
掌握 grep
能极大提升文本处理效率,建议结合 man grep
深入学习!