插件窝 干货文章 在Linux中使用grep正则表达式入门

在Linux中使用grep正则表达式入门

匹配 正则 表达式 grep 759    来源:    2025-05-14

Linux grep 正则表达式入门指南

grep 简介

grep (Global Regular Expression Print) 是 Linux 中强大的文本搜索工具,它使用正则表达式来搜索文本并输出匹配的行。

基本语法

grep [选项] '正则表达式' 文件名

常用选项

  • -i:忽略大小写
  • -v:反向匹配,显示不匹配的行
  • -n:显示匹配行的行号
  • -c:统计匹配的行数
  • -r-R:递归搜索目录
  • -l:只显示包含匹配项的文件名
  • -w:全词匹配
  • -E:使用扩展正则表达式 (等同于 egrep)

基本正则表达式

1. 字符匹配

  • .:匹配任意单个字符
  • [abc]:匹配 a、b 或 c
  • [^abc]:匹配除了 a、b、c 之外的字符
  • [a-z]:匹配任意小写字母
  • [A-Z]:匹配任意大写字母
  • [0-9]:匹配任意数字

2. 位置锚定

  • ^:匹配行首
  • $:匹配行尾
  • \<\b:匹配单词开头
  • \>\b:匹配单词结尾

3. 重复匹配

  • *:匹配前一个字符 0 次或多次
  • \+:匹配前一个字符 1 次或多次 (需用 -E 或转义 \+)
  • ?:匹配前一个字符 0 次或 1 次 (需用 -E 或转义 \?)
  • {n}:精确匹配 n 次
  • {n,}:匹配至少 n 次
  • {n,m}:匹配 n 到 m 次

4. 特殊字符

  • \:转义特殊字符
  • |:或操作 (需用 -E)
  • ():分组 (需用 -E)

示例

  1. 搜索包含 "error" 的行:

    grep 'error' logfile.txt
    
  2. 忽略大小写搜索:

    grep -i 'error' logfile.txt
    
  3. 搜索以 "error" 开头的行:

    grep '^error' logfile.txt
    
  4. 搜索以数字结尾的行:

    grep '[0-9]$' logfile.txt
    
  5. 搜索包含 "error" 或 "warning" 的行:

    grep -E 'error|warning' logfile.txt
    
  6. 搜索 IP 地址:

    grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' logfile.txt
    
  7. 递归搜索目录:

    grep -r 'function_name' /path/to/code/
    
  8. 统计匹配行数:

    grep -c 'pattern' file.txt
    

高级技巧

  1. 使用 -A, -B, -C 显示上下文:

    grep -A 2 -B 2 'error' logfile.txt  # 显示匹配行前后各2行
    
  2. 使用 --color=auto 高亮显示匹配:

    grep --color=auto 'pattern' file.txt
    
  3. 结合管道使用:

    cat file.txt | grep 'pattern' | wc -l
    
  4. 搜索并替换 (结合 sed):

    grep -l 'old_pattern' *.txt | xargs sed -i 's/old_pattern/new_pattern/g'
    

注意事项

  1. 正则表达式中的特殊字符需要转义
  2. 基本正则表达式和扩展正则表达式有区别,使用 -E 选项可以启用扩展正则
  3. 在 shell 中使用时,正则表达式最好用单引号括起来,防止 shell 解释特殊字符

通过掌握这些基本正则表达式用法,你可以在 Linux 系统中高效地进行文本搜索和处理。