Skip to content

grep 命令

基本用法

搜索文本

bash
#!/bin/bash

# 在文件中搜索文本
grep "pattern" file.txt

搜索多个文件

bash
#!/bin/bash

# 在多个文件中搜索文本
grep "pattern" file1.txt file2.txt file3.txt

递归搜索

bash
#!/bin/bash

# 递归搜索目录
grep -r "pattern" /path/to/directory

常用选项

-i 选项

bash
#!/bin/bash

# 忽略大小写
grep -i "pattern" file.txt

-v 选项

bash
#!/bin/bash

# 反向匹配
grep -v "pattern" file.txt

-n 选项

bash
#!/bin/bash

# 显示行号
grep -n "pattern" file.txt

-c 选项

bash
#!/bin/bash

# 统计匹配行数
grep -c "pattern" file.txt

-l 选项

bash
#!/bin/bash

# 只显示文件名
grep -l "pattern" *.txt

-r 选项

bash
#!/bin/bash

# 递归搜索
grep -r "pattern" /path/to/directory

正则表达式

基本正则表达式

bash
#!/bin/bash

# 匹配行首
grep "^pattern" file.txt

# 匹配行尾
grep "pattern$" file.txt

# 匹配任意字符
grep "p.ttern" file.txt

# 匹配零次或多次
grep "pat*ern" file.txt

# 匹配一次或多次
grep "pat+ern" file.txt

扩展正则表达式

bash
#!/bin/bash

# 使用 -E 选项启用扩展正则表达式
grep -E "pattern1|pattern2" file.txt

# 匹配数字
grep -E "[0-9]+" file.txt

# 匹配单词
grep -E "\bword\b" file.txt

实用示例

示例1:查找文件

bash
#!/bin/bash

# 查找包含特定文本的文件
grep -r "function" /path/to/directory

# 查找特定扩展名的文件
grep -r "pattern" /path/to/directory --include="*.txt"

示例2:日志分析

bash
#!/bin/bash

# 查找错误日志
grep "ERROR" app.log

# 统计错误数量
grep -c "ERROR" app.log

# 查找特定日期的日志
grep "2024-01-01" app.log

示例3:代码搜索

bash
#!/bin/bash

# 查找函数定义
grep -n "function.*{" *.js

# 查找变量使用
grep -n "variable" *.js

示例4:数据过滤

bash
#!/bin/bash

# 过滤数据
grep "pattern" data.txt > filtered.txt

# 排除特定行
grep -v "pattern" data.txt > filtered.txt

最佳实践

1. 使用引号

bash
# 好的做法
grep "pattern" file.txt

# 不好的做法
grep pattern file.txt

2. 使用 -i 选项

bash
# 好的做法
grep -i "pattern" file.txt

# 不好的做法
grep "pattern" file.txt
grep "Pattern" file.txt
grep "PATTERN" file.txt

3. 使用 -r 选项

bash
# 好的做法
grep -r "pattern" /path/to/directory

# 不好的做法
find /path/to/directory -type f -exec grep "pattern" {} \;

总结

grep 命令的关键点:

  1. 基本用法grep "pattern" file.txt
  2. 常用选项-i-v-n-c-l-r
  3. 正则表达式:基本正则表达式、扩展正则表达式
  4. 实用示例:查找文件、日志分析、代码搜索、数据过滤
  5. 最佳实践:使用引号、使用 -i 选项、使用 -r 选项

下一节我们将学习 sed 命令的使用。