全局搜索正则表达式grep

grep简介

grep全程Globally search a Regular Expression and print,是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。unix的grep家族包括grep和egrep。

工作模式

工作方式

grep在一个或者多个文件中搜索字符串模板

如果模板中包括空格,需要使用引号引起来

模板后的所有字符串会被看作是文件名
工作结果

如果模板搜索成功,则返回0状态码。

如果搜索不成功,则返回1状态码

如果搜索的文件不存在,则返回2的状态码。

grep常用参数

# cp /etc/passwd . 【复制文件到当前目录】

# vim passwd 【修改当前文件的内容】

# grep root passwd 【在passwd文件搜索root相关的内容】

-e 过滤多个字符

# grep -e root -e lee passwd

-E 扩展表达式

grep -E "leelroot" passwd 【也是可以过滤多个字符】

-n 过滤显示行

-w 按单词过滤,及相等而非相似

grep -w root passwd 【过滤包含root单词的行】

-o 只显示匹配内容

-v显示不匹配内容

# grep -nvE "lee|root" passwd 【显示不含有lee和root的行】

-c 统计行数

# grep -c root passwd 【显示包含root的行数】

显示搜索内容周围行

# grep -n2 sys passwd 【显示含有sys关键字及其周围的2行,或****(-2n)(-2 -n)****】

# grep -n A1 sys passwd 【显示含有sys的行以及1行】

# grep -n B1 sys passwd 【显示含有sys的行以及1行】

正则表达式的使用

什么是正则表达式

正则表达式就是用在字符串的处理上面的一项表示式

在做程序设计时很多需要对一类字符进行处理,正则表达式就完美的解决了这个问题
基本与扩展正则表达式

基本正则表达式(Basic Regular Expression, BRE),又称为标准正则表达式,是最早制订的正则表达 式规范,仅支持最基本的元字符集。基本正则表达式是POSIX规范制订的两种正则表达式语法标准之---,另外一种语法标准称为扩展正则表达式

扩展正则表达式(Extended Regular Expression,ERE)支持比基本正则表达式更多的元字符

在grep命令使用基本正则表达式时不需要加任何参数

在grep命令使用扩展正则表达式时必须加-E参数
# cd /mnt/

# vim test

^ 字符 以开头搜索

字符 $ 以结尾搜索

. 字符 表示字符前单个的 . 匹配任意字符

\] 显示匹配字符 ![](https://i-blog.csdnimg.cn/direct/0f8557040f7e4f2dbcecfbc79251a49d.png) \^\[ \] 显示以字符开头的 ![](https://i-blog.csdnimg.cn/direct/28e1de639ff04284a4e29d7960b1eaf2.png) \[\^ \] 显示不匹配的字符 ![](https://i-blog.csdnimg.cn/direct/c1d6c31540be40f4bf8278a35d3b75d2.png) \* 表示出现任意次的字符 ![](https://i-blog.csdnimg.cn/direct/522145a1ff8848ef85a63e8e54d237e4.png) ****.**** + 表示必须有1个字符 ![](https://i-blog.csdnimg.cn/direct/04dfb8a95e3a4dcab17b920d5808e236.png) ****.****{ m , n } 表示字符出现m到n次 ![](https://i-blog.csdnimg.cn/direct/3a5744204bc041f79fb05ed78548c205.png) . ? 字符出现0到1次 ![](https://i-blog.csdnimg.cn/direct/f35534b2782b4b2baf70bb3deab47d2c.png) ( mn ) 显示有mn的字符 ![](https://i-blog.csdnimg.cn/direct/1481d9fda0ee49ad867b150eead993d7.png) ( m\|n ) 显示m或n的字符 ![](https://i-blog.csdnimg.cn/direct/6c168e3ebcd749d9810ffb5d04ce134c.png) \\ 将特殊字符失效 ****# vim test**** ![](https://i-blog.csdnimg.cn/direct/32aa5ba59d404d07a8a4e962bfac2bc8.png) ****# grep -E '**** ****e**** ****\\$**** ****' test**** 【test文件搜索e开头,中间有 ****$**** 的字符】 ![](https://i-blog.csdnimg.cn/direct/9bdba04c51c24378b7acb98202c80fe1.png) "\\\" \\\<表示lee前有字符的不搜索,\\\>表示lee后有字符的不搜索 ****# grep -E "\\\" passwd**** 【搜索有单独lee的字符】 ![](https://i-blog.csdnimg.cn/direct/b1034ffc5f754844aeda398d5de57020.png) ![](https://i-blog.csdnimg.cn/direct/28476c2b1fe54f779868591ae1301ed2.png) 正则表达式字符集 ![](https://i-blog.csdnimg.cn/direct/05b5b5d6231541e580bb65ad0fe05526.png) ****# touch ealee eAlee "ea lee" "ea@lee" "ea8lee"**** ****# rm -fr e\[\[:alpha:\]\]lee**** 【删除e+任意字符+lee,如ealee,eAlee】 ****# rm -fr e\[\[:alpha:\]\]lee**** 【删除e+大写字符+lee】

相关推荐
wanhengidc2 分钟前
云手机 游戏多开不卡顿
运维·服务器·网络·安全·web安全·游戏·智能手机
江屿风4 分钟前
【c++笔记】类和对象流食般投喂(中)
开发语言·c++·笔记
gnhpc15 分钟前
飞腾主板,重构云计算终端安全新生态
安全·重构·云计算
许长安6 分钟前
Kafka 架构讲解:从提交日志到分区副本机制
c++·经验分享·笔记·分布式·架构·kafka
小袁说公考15 分钟前
2026广东公考培训标杆深度解析:广东粉笔——科技赋能本土,领跑粤考赛道
大数据·人工智能·经验分享·笔记·科技·其他
TEC_INO18 分钟前
Linux58:rockx_vi_handle_thread线程的讲解
linux·运维·服务器
袁煦丞 cpolar内网穿透实验室1 小时前
出差路上,服务器在我手机里
运维·服务器·docker·容器·智能手机·远程工作·cpolar
小此方1 小时前
Re:Linux系统篇(十三)特别篇: 实现Linux第⼀个系统程序−进度条
linux·运维·服务器
智者知已应修善业9 小时前
【51单片机89C51及74LS273、74LS244组成】2022-5-28
c++·经验分享·笔记·算法·51单片机
夏日听雨眠9 小时前
LInux(逻辑地址与物理地址的区别,文件描述符,lseek函数)
linux·运维·网络