Linux-grep

Linux-grep

起男 29 2025-03-05

Linux-grep

grep 是 Linux 和 Unix 系统中一个强大的文本搜索工具,用于在文件中查找匹配指定模式的行。它支持正则表达式,可以快速定位和过滤文本内容。

基本语法

grep [选项] 模式 文件名
  • 选项:控制 grep 的行为。
  • 模式:要搜索的文本或正则表达式。
  • 文件名:要搜索的文件。

常用选项

选项 描述
-i 忽略大小写。
-v 反向匹配,显示不匹配的行。
-r 递归搜索目录中的文件。
-n 显示匹配行的行号。
-c 统计匹配行的数量。
-l 只显示包含匹配项的文件名。
-w 匹配整个单词。
-A NUM 显示匹配行及其后 NUM 行。
-B NUM 显示匹配行及其前 NUM 行。
-C NUM 显示匹配行及其前后各 NUM 行。
-E 使用扩展正则表达式(等同于 egrep)。

示例

基本搜索

  • 在文件中搜索包含 error 的行:

    grep "error" logfile.txt
    
  • 忽略大小写搜索:

    grep -i "error" logfile.txt
    
  • 搜索整个单词:

    grep -w "error" logfile.txt
    

显示行号

  • 显示匹配行的行号:

    grep -n "error" logfile.txt
    

统计匹配行数

  • 统计匹配行的数量:

    grep -c "error" logfile.txt
    

反向匹配

  • 显示不包含 error 的行:

    grep -v "error" logfile.txt
    

递归搜索

  • 递归搜索目录中所有文件:

    grep -r "error" /var/log/
    

显示文件名

  • 只显示包含 error 的文件名:

    grep -l "error" *.log
    

上下文显示

  • 显示匹配行及其后 2 行:

    grep -A 2 "error" logfile.txt
    
  • 显示匹配行及其前 2 行:

    grep -B 2 "error" logfile.txt
    
  • 显示匹配行及其前后各 2 行:

    grep -C 2 "error" logfile.txt
    

使用正则

  • 使用正则表达式搜索:

    grep "error.*critical" logfile.txt
    
  • 使用扩展正则表达式:

    grep -E "error|critical" logfile.txt
    

多模式搜索

  • 搜索多个模式:

    grep -e "error" -e "critical" logfile.txt
    

结合管道

  • 结合 ps 命令搜索进程:

    ps aux | grep "nginx"
    
  • 结合 find 命令搜索文件内容:

    find /var/log -name "*.log" | grep "error"