93 lines
1.6 KiB
Markdown
93 lines
1.6 KiB
Markdown
## 1、`grep` 概览
|
|
|
|
`grep` 是 Linux 中最常用的文本搜索命令之一,用于在文件或命令输出中查找匹配的内容。
|
|
|
|
日常使用场景包括:
|
|
|
|
- 在配置文件中查找关键字
|
|
- 在日志中定位报错信息
|
|
- 过滤命令输出
|
|
- 结合管道做批量分析
|
|
|
|
## 2、基本格式
|
|
|
|
```shell
|
|
grep [选项] "模式" 文件名
|
|
```
|
|
|
|
例如:
|
|
|
|
```shell
|
|
grep "error" app.log
|
|
```
|
|
|
|
表示在 `app.log` 中查找包含 `error` 的行。
|
|
|
|
## 3、常见选项
|
|
|
|
- `-m`:匹配指定次数后停止
|
|
- `-v`:取反,显示不匹配的行
|
|
- `-i`:忽略大小写
|
|
- `-n`:显示匹配行的行号
|
|
- `-c`:只显示匹配次数
|
|
- `-w`:只匹配完整单词
|
|
|
|
## 4、常见示例
|
|
|
|
### 4.1 忽略大小写搜索
|
|
|
|
```shell
|
|
grep -i "error" app.log
|
|
```
|
|
|
|
### 4.2 显示行号
|
|
|
|
```shell
|
|
grep -n "listen" /etc/ssh/sshd_config
|
|
```
|
|
|
|
### 4.3 统计匹配次数
|
|
|
|
```shell
|
|
grep -c "404" access.log
|
|
```
|
|
|
|
### 4.4 显示不匹配的行
|
|
|
|
```shell
|
|
grep -v "^#" /etc/ssh/sshd_config
|
|
```
|
|
|
|
这类用法常用于过滤掉注释行。
|
|
|
|
### 4.5 只匹配完整单词
|
|
|
|
```shell
|
|
grep -w "root" /etc/passwd
|
|
```
|
|
|
|
## 5、结合管道使用
|
|
|
|
`grep` 经常和其他命令组合:
|
|
|
|
```shell
|
|
ps -ef | grep nginx
|
|
```
|
|
|
|
```shell
|
|
journalctl -xe | grep -i "failed"
|
|
```
|
|
|
|
## 6、实战建议
|
|
|
|
- 配置文件查找时,经常结合 `-n` 看行号
|
|
- 查日志时,经常结合 `-i` 忽略大小写
|
|
- 过滤无效行时,经常用 `-v`
|
|
- 要统计数量时,用 `-c` 比肉眼数更快
|
|
|
|
## 7、小结
|
|
|
|
- `grep` 是最基础、最高频的文本搜索命令
|
|
- `-i`、`-n`、`-v`、`-c`、`-w` 是最常用选项
|
|
- 它非常适合配合管道过滤日志、进程、配置输出
|