插件窝 干货文章 linux中grep的用法是啥

linux中grep的用法是啥

匹配 grep 搜索 正则 816    来源:    2025-04-12

grep 是 Linux 中强大的文本搜索工具,用于在文件或标准输入中查找匹配指定模式的行。以下是其核心用法和常见场景:


1. 基本语法

grep [选项] "搜索模式" [文件...]

2. 常用选项

选项 作用
-i 忽略大小写
-v 反向匹配(显示不包含模式的行)
-n 显示匹配行的行号
-r-R 递归搜索目录中的文件
-l 仅显示包含匹配项的文件名
-c 统计匹配的行数(非次数)
-w 全词匹配(避免部分匹配)
-A NUM 显示匹配行及其后NUM行(After)
-B NUM 显示匹配行及其前NUM行(Before)
-C NUM 显示匹配行及其前后各NUM
-E 启用扩展正则表达式(等同 egrep
-F 按字面字符串匹配(禁用正则,等同 fgrep
--color=auto 高亮匹配内容

3. 常见用法示例

3.1 基础搜索

# 在文件中搜索 "error"
grep "error" /var/log/syslog

# 忽略大小写搜索
grep -i "warning" file.txt

3.2 递归搜索目录

# 递归搜索当前目录下所有文件
grep -r "main()" .

# 仅显示包含匹配项的文件名
grep -rl "function" /path/to/dir

3.3 正则表达式

# 使用基础正则(匹配以"test"开头的行)
grep "^test" file.txt

# 使用扩展正则(匹配"error"或"warning")
grep -E "error|warning" file.log

# 匹配数字开头的行
grep "^[0-9]" data.txt

3.4 上下文查看

# 显示匹配行及其后3行
grep -A 3 "panic" system.log

# 显示匹配行及其前后各2行
grep -C 2 "timeout" debug.log

3.5 统计与过滤

# 统计匹配的行数
grep -c "404" access.log

# 显示不包含"success"的行
grep -v "success" result.txt

3.6 从其他命令输出中搜索

# 搜索进程列表中的"nginx"
ps aux | grep nginx

# 搜索当前目录下的文件名(结合 `find`)
find . -type f | grep ".conf$"

4. 高级技巧

  • 多模式匹配:使用 -e 指定多个模式

    grep -e "error" -e "fail" log.txt
    
  • 从文件读取模式-f):

    grep -f patterns.txt target.txt
    
  • 高亮匹配(默认支持时):

    grep --color=auto "keyword" file
    
  • 静默模式(仅返回退出状态,用于脚本判断):

    if grep -q "found" file.txt; then
    echo "存在匹配"
    fi
    

5. 注意事项

  1. 特殊字符(如 $, *, [ 等)在正则中有特殊含义,需用 \ 转义。
    bash grep "price: \$100" file.txt
  2. 性能优化:大文件搜索时,可结合 -m NUM 限制匹配行数。

  3. 二进制文件:默认会输出二进制内容(可能乱码),用 -a 强制按文本处理。


掌握这些用法后,grep 可以高效处理日志分析、代码搜索等任务。如需更复杂的文本处理,可结合 awksed 使用。