linux搜索命令(grep+sed)

一、grep命令

bash 复制代码
grep -nE "class |def " xxx.py

grep -n -E "class |def " 文件

│ │ │ │ │

│ │ │ │ └─ 要搜索的文件

│ │ │ └─ 搜索什么

│ │ └─ 使用扩展正则表达式

│ └─ 显示行号

└─ 搜索文本

1.grep的核心作用就是:在文件中搜索包含某个字符串/模式的行。

例如:

bash 复制代码
grep "class" hstu.py

就是找出 hstu.py 中所有包含 class 的行。

2.-n的作用是显示行号(line number)。

例如使用-n后得到:

bash 复制代码
50:class RelativeAttentionBiasModule(torch.nn.Module):
65:class RelativePositionalBias(RelativeAttentionBiasModule):
225:class SequentialTransductionUnitJagged(torch.nn.Module):
448:class HSTUJagged(torch.nn.Module):
544:class HSTU(SequentialEncoderWithLearnedSimilarityModule):

这对我们学习源码特别有用。因为可以直接告诉你:SequentialTransductionUnitJagged 从第 225 行开始。然后你就可以:

bash 复制代码
sed -n '225,447p' hstu.py

把这段拿出来用。

3.-E = Extended Regular Expression,扩展正则表达式。

刚才【grep -nE "class |def " hstu.py】,这里的【class |def】里面的 【| 】意思是:或者。

所以【grep -nE "class |def " hstu.py】相当于找出所有包含 class 或者 def 的行。

而不是执行两次:

复制代码
grep -n "class" hstu.py
grep -n "def" hstu.py

二、sed -n 是干什么的?

例如:

bash 复制代码
sed -n '225,447p' xxxx.py

这个命令可以理解成:把文件的第 225~447 行打印出来。

sed -n '225,447p' 文件

│ │ │ │

│ │ │ └─ 操作哪个文件

│ │ └─ 打印 225~447 行

│ └─ 不默认打印所有行

└─ 流编辑器

p是print(打印)

三、总结

源码学习时:

复制代码
grep
 ↓
"帮我找东西在哪里"
 ↓
得到行号
 ↓
sed
 ↓
"把这一段代码拿出来给我看"
相关推荐
Android系统攻城狮1 小时前
Linux Gstreamer深度解析之gst_audio_encoder_set_frame_max调用流程与实战(六十一)
android·linux·运维·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
H.莓飛2 小时前
【C++】命名空间、缺省参数、函数重载与引用
linux·开发语言·c++·visual studio
91刘仁德2 小时前
IP协议详解:从IP协议头到网段划分、路由与NAT
linux·服务器·网络·网络协议·tcp/ip
硅基手札3 小时前
【Linux内核专栏 14】网络协议栈
linux·运维·网络协议
沫璃染墨5 小时前
《Linux工程实践篇(一):认识设计模式——从日志系统看策略模式》
linux·c++·安全·设计模式·策略模式
工作10年+,存储芯片行业5 小时前
Linux NVMe 中断排查与性能优化:CPU 亲和性
linux·运维·服务器·windows·性能优化·ssd·pcie
wuminyu5 小时前
ForkJoinPool内部WorkQueue的Lock-Free数组操作以及并发任务窃取原理剖析
java·linux·c语言·jvm·c++
她说彩礼65万5 小时前
C语言 堆区和栈区
java·linux·c语言
一号弯6 小时前
装完LINUX,请先新建日常用户
linux·运维·服务器
驭渊的小故事6 小时前
linux 基础命令 + git 仓库创建和配置命令
linux·git