📖 知识点
1. Windows Ctrl+F → Linux grep
| Windows | Linux | 说明 |
|---|---|---|
| Ctrl+F 搜索 |
| 在文件里找含关键词的行 |
| 搜索所有文件 |
| 在目录所有文件里找 |
grep 是 Linux 的 "火眼金睛":扫描文本,只把包含关键词的行筛出来显示,其余全部过滤掉。
💡 生活比喻一份长名单,你只想看 "姓张" 的人。
grep 张 名单.txt就像拿着放大镜快速扫过,只把含 "张" 的行挑出来 —— 金子里筛出金,其余不要。
2. 基本用法
grep 关键词 文件名 # 在文件里找含关键词的行
grep Python 笔记.txt # 找出笔记里所有提到Python的行
3. 常用选项
| 选项 | 作用 |
|---|---|
| 忽略大小写(python/Python 都算) |
| 显示行号 |
| 在目录里递归搜索所有文件 |
| 只数有几行匹配 |
grep -i python 笔记.txt # 不分大小写找
grep -n Python 笔记.txt # 找并显示行号
grep -r Python . # 在当前目录所有文件里找
4. 配合管道 | 组合(神技)
| 管道:把前一个命令的输出,交给后一个命令处理:
ps aux | grep python # 从ps结果里筛出python进程
ls -l | grep 报告 # 从文件列表里筛出含"报告"的
find . -name "*.txt" | grep 笔记 # 先找txt再筛含"笔记"的
管道让命令 "接力":一个命令的 "输出" 变成下一个命令的 "输入"。这是 Linux 最强大的组合技之一。
⚠️ 易错提醒
grep 区分大小写(Python 和 python 不同),用
-i忽略grep 筛的是 "包含关键词的行",不是 "整个文件"
管道
|的写法是 "命令 1 | 命令 2",把命令 1 的输出交给命令 2
⚔️ Kata 实战任务
任务需求:
创建 "笔记.txt",写入几行内容(其中几行含 "Python")
用
grep Python 笔记.txt筛出含 Python 的行用
grep -i python 笔记.txt忽略大小写搜索用
grep -n Python 笔记.txt显示行号用管道
ls -l | grep 笔记从文件列表里筛,体会管道
参考代码(在终端依次敲)
# 准备一份"笔记"
cd ~
echo "今天学习Linux" > 笔记.txt
echo "重点练习Python命令" >> 笔记.txt
echo "明天复习grep" >> 笔记.txt
echo "Python真强大" >> 笔记.txt
# 1. 筛出含Python的行
grep Python 笔记.txt
# 2. 忽略大小写
grep -i python 笔记.txt
# 3. 显示行号
grep -n Python 笔记.txt
# 4. 管道:从文件列表里筛出含"笔记"的
ls -l | grep 笔记
运行示例:
user@linux:~$ grep Python 笔记.txt
重点练习Python命令
Python真强大
user@linux:~$ grep -i python 笔记.txt
重点练习Python命令
Python真强大
user@linux:~$ grep -n Python 笔记.txt
2:重点练习Python命令
4:Python真强大
user@linux:~$ ls -l | grep 笔记
-rw-r--r-- 1 user user 0 Oct 23 10:00 笔记.txt
🧠 思考题
grep筛出的是什么?-i和-n分别起什么作用?管道
|的作用是什么?ps aux | grep python里,两条命令分别做了什么、怎么接力?