扩展正则表达式

1. 扩展正则表达式

扩展正则表达式使用范围更广,可简化整个命令操作
范例:
去除空白行与行首为#的行

[dmtsai@study ~] grep -v '^$' regular_express.txt | grep -v '^#'
#grep : 全面搜索正则表达式,并将其打印出来
#[-v] : 显示不包含匹配文本的所有行
简化为:
[dmtsai@study ~] egrep -v '^$|^#' regular_express.txt

扩展正则表达式


egrep命令作用是在文件内查找指定的字符串
egrep执行效果与grep -E相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法
egrep用法:

[dmtsai@study ~] egrep [参数] [文件]
-i : 搜索时,忽略大小写
-c : 只输出匹配行的数量
-l : 只列出符合匹配的文件名,不列出具体的匹配行
-n : 列出所有的匹配行,显示行号
-h : 查询多文件时不显示文件名
-s : 不显示不存在、没有匹配文本的错误信息
-v : 显示不包含匹配文本的所有行
-w : 匹配整词
-x : 匹配整行
-r : 递归搜索
-q : 禁止输出任何结果,已退出状态表示搜索是否成功
-b : 打印匹配行距文件头部的偏移量,以字节为单位
-o : 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位

扩展正则表达式的特殊符号

RE字符 意义
+ 重复【1个或1个以上】的前一个RE字符

范例:

查找god、good、goood等的字符串。那个o+代表【1个以上的o】

[dmtsai@study ~] egrep -n 'go+d' regular_express.txt
# egrep : 在文件内查找指定的字符串
# [-n] : 列出所有的匹配行,显示行号

扩展正则表达式


RE字符 意义
? 【0个或1个】的前一个RE字符

范例:

查找gd、god这两个字符串,那个o?代表【空的或1个o】

[dmtsai@study ~] egrep -n 'go?d' regular_express.txt
# egrep : 在文件内查找指定的字符串
# [-n] : 列出所有的匹配行,显示行号

扩展正则表达式


RE字符 意义
| 用【或】的方式找出数个字符串

范例:
查找gd、god这两个字符串,单引号内的管道意义为【or】

[dmtsai@study ~] egrep -n 'gd|good' regular_express.txt
# egrep : 在文件内查找指定的字符串
# [-n] : 列出所有的匹配行,显示行号

扩展正则表达式

查找gd、god、dog这三个字符串,单引号内的管道意义为【or】

[dmtsai@study ~] egrep -n 'gd|good|dog' regular_express.txt
# egrep : 在文件内查找指定的字符串
# [-n] : 列出所有的匹配行,显示行号

扩展正则表达式


RE字符 意义
( ) 找出【群组】字符串

范例:
查找glad或good这两个字符串,因为g与d是重复的,可将la与oo列于( )中,并以 | 分隔开

[dmtsai@study ~] egrep -n 'g(la|oo)d' regular_express.txt
# egrep : 在文件内查找指定的字符串
# [-n] : 列出所有的匹配行,显示行号

扩展正则表达式


RE字符 意义
( )+ 多个重复群组的判别

范例:
将【AxyzxyzxyzxyzC】用echo打印,找开头是A结尾是C,中间有1个以上"xyz"字符串

[dmtsai@study ~] echo 'AxyzxyzxyzxyzC' | egrep 'A(xyz)+C'
# echo : 在终端设备上输出字符串或变量提取后的值
# egrep : 在文件内查找指定的字符串

扩展正则表达式


特别强调:! 在正则表达式中并不是特殊字符

范例:
查出文件中含有 !与 > 的行

[dmtsai@study ~] grep -n '[!>]' regular_express.txt
# grep : 全面搜索正则表达式,并将其打印出来
# [-n] : 列出所有的匹配行,显示行号

扩展正则表达式

上一篇:Linux1:入门概述与虚拟机环境搭建


下一篇:shell命令三剑客之grep命令详解