正则表达式
本人第一次写博文。由于最近刚好学到了正则表达式基本使用方法。整理了一下,以后用于回顾查找。
正则表达式基本说明:
基本来说,正则表达式式一种用来描述一定数量文本的模式,正则表达式的简写为REGEX 全称Regular Express。
首先正则表达式对于Linux运维工程师来说非常重要,这将伴随每一个运维工程师的职业生涯。说到正则表达式那么不得不说一下grep和egrep,grep全称是Globally search for a Regular Expression and print out the line,表示全局搜索正则表达式并打印匹配结果的意思,好了现在让我们来一起揭开正则表达式的神秘面纱。
常用格式:
grep [option] "pattern" FILE
常用选项:
--color 表示匹配结果用高亮颜色显示
-i : 表示不区分大小写
. : (小数点)表示任意匹配任意单个字符
-v:表示除显示结果以外的所有内容(上面为不加-v效果)
-o :表示只显示匹配到的内容
* :表示匹配之前的字符任意次
.* : 表示匹配任意长度的任意字符
-A n:n为数字,显示匹配到的内容及其后面的n行
示例:
-A 1,如下图:
-B n :n为数字,显示匹配到的内容及其前面的n行
示例:
-B 1,如下图:
-C n:n为数字,显示匹配到的内容及其前后n行
示例:
-C 1,如下图:
正则表达式元字符:
^ :表示锚定行首,格式:
‘^pattern’
$ :表示锚定行首,格式:
‘pattern$’
注意:特殊用法,匹配空白行为‘^$’
[ ]:表示匹配范围内的任意字符
[^] : 表示匹配范围外任意单个内容
常用范围表示格式:
[0-9] : 表示所有数字等同于 [[:digit:]]
[a-z] : 表示所有小写字母等同于 [[:lower:]]
[A-Z] : 表示所有大写字母等同于 [[:upper:]]
[a-zA-Z] : 表示所有字母等同于 [[:alpha:]]
[a-zA-Z0-9] : 表示字母和数字等同于 [[:alnum:]]
[[:graph:]] : 表示非空字符(非空格、控制字符)
[[:cntrl:]] : 表示控制字符
[[:punct:]] : 表示标点符号
[[:print:]] : 表示非空字符(包含空格)
[[:space:]] : 表示空白字符
\? :表示匹配之前的字符0次或1次
\{m,n\} :表示匹配之前的字符至少m次,最多n次
\{0,n\}:表示匹配之前的字符最多n次
\{m,\} :表示匹配之前的字符至少n次
\{m\} :表示匹配之前的字符至少m次
\< :表示单词词首锚定,等同于\b的用法一样
\> :表示单词词尾锚定,等同于\b的用法一样
如:\<word\> :表示锚定单词,等同于\bword\b 个人觉得\b较简单哈哈
分组与引用:
\(PATTERN\):表示将此PATTERN匹配到的字符当作一个不可侵犯的整体
\( PATTERN\).*\1 :表示引用前面分组的内容
egrep元字符:
+ :表示匹配前面的字符至少一次
| :管道符在这里表示|符号两边任意一边
( | ) :带括号的
?:等同于grep中的\?
( ):等同于grep中的\(\)
{ } :等同于grep中\{\}
案例:
- 显示test.txt中不以cb为结尾的行
2.找出test文件中的三位或四位数
3.找出/etc/grub2.cfg文件中,以至少一个空白字符开头,后面又跟了非空白字符的行; (最后显示内容较多,所以就截取部分)
4、找出"fdisk -l“命令的结果中,包含以/dev/后跟sd或hd及一个小字母的行;