grep 命令简介

134 阅读2分钟

grep 是一个强大的命令行工具,用于在文件中搜索文本模式。它是 Unix 和类 Unix 系统(如 Linux 和 macOS)中非常常用的工具。以下是 grep 命令的详解,包括其基本用法、常用选项和一些高级用法。

基本用法

grep [OPTIONS] PATTERN [FILE...]
  • PATTERN:要搜索的文本模式,可以是简单的字符串或正则表达式。
  • [FILE...]:要搜索的文件列表。如果不指定文件,grep 将从标准输入读取。

常用选项

  • -i:忽略大小写。
  • -v:反转匹配,显示不匹配的行。
  • -c:只输出匹配的行数。
  • -l:只输出包含匹配模式的文件名。
  • -L:只输出不包含匹配模式的文件名。
  • -n:显示匹配行的行号。
  • -H:显示匹配行的文件名(默认在多文件搜索时启用)。
  • -h:不显示匹配行的文件名(默认在单文件搜索时启用)。
  • -r-R:递归搜索目录中的文件。
  • -w:只匹配整个单词。
  • -x:只匹配整个行。
  • -A NUM:显示匹配行及其后 NUM 行。
  • -B NUM:显示匹配行及其前 NUM 行。
  • -C NUM:显示匹配行及其前后 NUM 行。
  • --color:高亮显示匹配的文本(通常默认启用)。

示例

  1. 基本搜索:

    grep "pattern" file.txt
    
  2. 忽略大小写:

    grep -i "pattern" file.txt
    
  3. 显示匹配行的行号:

    grep -n "pattern" file.txt
    
  4. 递归搜索目录:

    grep -r "pattern" /path/to/directory
    
  5. 只显示匹配的文件名:

    grep -l "pattern" *.txt
    
  6. 显示匹配行及其前后 3 行:

    grep -C 3 "pattern" file.txt
    
  7. 反转匹配,显示不匹配的行:

    grep -v "pattern" file.txt
    
  8. 搜索多个文件:

    grep "pattern" file1.txt file2.txt
    
  9. 只匹配整个单词:

    grep -w "word" file.txt
    
  10. 搜索包含特殊字符的模式(使用正则表达式):

    grep "pattern\." file.txt
    

高级用法

  1. 使用正则表达式:

    grep -E "pattern1|pattern2" file.txt
    

    或者使用 egrep(等效于 grep -E):

    egrep "pattern1|pattern2" file.txt
    
  2. 结合管道使用:

    cat file.txt | grep "pattern"
    
  3. 从命令输出中搜索:

    dmesg | grep "error"
    
  4. 结合其他命令使用:

    ps aux | grep "process_name"
    
  5. 搜索并高亮显示匹配:

    grep --color=auto "pattern" file.txt
    

注意事项

  • grep 默认使用基本正则表达式(BRE)。使用 -E 选项可以启用扩展正则表达式(ERE)。
  • grep 是大小写敏感的,使用 -i 可以忽略大小写。
  • 当处理二进制文件时,grep 可能会输出 "Binary file matches"。使用 -a 选项可以强制将文件视为文本。

grep 是一个非常灵活且强大的工具,掌握其用法可以极大地提高文本处理和搜索的效率。