linux grep命令怎么使用

举报
yd_236198820 发表于 2026/10/06 11:34:31 2026/10/06
【摘要】 `grep` 是 Linux 中最常用的文本搜索工具之一,用于在文件或标准输入中查找匹配指定模式的行。## 基本语法```bashgrep [选项] 模式 [文件...]```## 最常用的用法### 1. 在文件中搜索```bashgrep "hello" file.txt          # 在 file.txt 中查找包含 hello 的行grep "hello" file1.txt...

`grep` 是 Linux 中最常用的文本搜索工具之一,用于在文件或标准输入中查找匹配指定模式的行。

## 基本语法

```bash
grep [选项] 模式 [文件...]
```

## 最常用的用法

### 1. 在文件中搜索
```bash
grep "hello" file.txt          # 在 file.txt 中查找包含 hello 的行
grep "hello" file1.txt file2.txt   # 在多个文件中查找
```

### 2. 从管道中搜索
```bash
ps aux | grep nginx            # 查找 nginx 进程
cat file.txt | grep "error"    # 从管道输入中搜索
```

### 3. 递归搜索目录
```bash
grep -r "TODO" ./src           # 递归搜索 src 目录下所有文件
grep -rn "TODO" ./src          # 递归并显示行号
```

## 常用选项

| 选项 | 说明 |
|------|------|
| `-i` | 忽略大小写 |
| `-v` | 反向匹配(显示不包含模式的行) |
| `-n` | 显示行号 |
| `-r` / `-R` | 递归搜索目录 |
| `-l` | 只显示匹配的文件名 |
| `-L` | 只显示不匹配的文件名 |
| `-c` | 只显示匹配的行数 |
| `-w` | 全词匹配 |
| `-E` | 使用扩展正则表达式(等同 egrep) |
| `-F` | 按固定字符串匹配(等同 fgrep) |
| `-o` | 只输出匹配的部分 |
| `-A n` | 显示匹配行及其后 n 行 |
| `-B n` | 显示匹配行及其前 n 行 |
| `-C n` | 显示匹配行及其前后各 n 行 |
| `--color=auto` | 高亮显示匹配内容 |

## 常见示例

```bash
# 忽略大小写搜索
grep -i "error" log.txt

# 显示行号
grep -n "main" code.c

# 反向匹配:显示不含 error 的行
grep -v "error" log.txt

# 统计匹配行数
grep -c "warning" log.txt

# 只列出包含匹配内容的文件名
grep -l "config" *.conf

# 全词匹配,避免匹配到 "helloworld"
grep -w "hello" file.txt

# 显示匹配行及后 3 行(常用于看日志上下文)
grep -A 3 "Exception" app.log

# 显示匹配行及前后各 2 行
grep -C 2 "failed" app.log

# 递归搜索并排除某些目录
grep -rn "TODO" . --exclude-dir=.git --exclude-dir=node_modules
```

## 正则表达式

```bash
# 基本正则(BRE)
grep "^root" /etc/passwd        # 以 root 开头
grep "bash$" /etc/passwd        # 以 bash 结尾
grep "a.b" file.txt             # . 匹配任意单字符

# 扩展正则(-E)
grep -E "error|warning" log.txt # 匹配 error 或 warning
grep -E "[0-9]{3}" file.txt     # 匹配 3 位数字
grep -E "^(foo|bar)" file.txt   # 以 foo 或 bar 开头
```

## 实用技巧

```bash
# 搜索时高亮显示(很多系统已默认别名)
grep --color=auto "pattern" file

# 排除二进制文件
grep -I "text" *

# 结合 find 使用
find . -name "*.py" | xargs grep "import"

# 统计每个文件中的匹配次数
grep -rc "def " ./src
```

## 注意事项

- 模式中含空格或特殊字符时用引号包裹,如 `grep "hello world" file`
- 若模式以 `-` 开头,用 `--` 分隔,如 `grep -- "-foo" file`
- `-r` 和 `-R` 的区别:`-R` 会跟随符号链接,`-r` 默认不跟随

如果你有具体的使用场景(比如过滤日志、查找代码),可以告诉我,我帮你写出对应的命令。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。