目录
引言
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
1、正则表达式
1.1、正则表达式的定义
正则表达式,又称正规表达式、常规表达式,使用字符串来描述、匹配一系列符合某个规则的字符串正则表达式组成。
1.2、基础正则表达式元字符
基础正则表达式是常用的正则表达式部分,除了普通字符外,常见到以下元字符。
字符 | 含义 |
\ | 转义字符,!、\n等 |
---|---|
^ | 匹配字符串开始的位置,列:^a ^the ^# |
$ | 匹配字符串结束的位置,列:word$ |
. | 匹配除\n之外的任意的一个字符,列:go.d、g…d |
* | 匹配前面子表达式0次或者无数次,;列:goo*d、go.*d |
[list] | 匹配list列表中的一个字符,列:go[ola]d、[abc]、[a-z]、[a-z0-9] |
[^list] | 匹配任意不在list列表中的一个字符,列:[ ^a-z]、[ ^0-9]、[ ^A-Z0-9] |
{n,m} | 匹配前面的子表达式n到m次,有{n}、{n}、{n,m}三种格式,列:go{2}d、go{2} |
1.3、扩展正则表达式元字符
字符 | 含义 |
+ | 匹配前面子表达式1次以上,列:go+d,将匹配至少一个o |
? | 匹配前面子表达式0次或者1次,列:go?d,将匹配gd或god |
() | 将括号中的字符串作为一个整体,列:(xyz)+,将匹配xyz整体1次以上,如xyzxyz |
l | 以或的方式匹配字条串,列1:good l food ,将匹配good或者food;列2:g(oo l la)d,将匹配good或者glad |
定位符
^ 匹配输入字符串开始的位置
$匹配输入字符串结尾的位置
非打印字符
\n匹配一个换行符
\r匹配一个回车符
\t匹配一个制表符
2、grep
grep命令使用正则表达式来搜索文本,并且把匹配的文本打印出来
常用选项 | 含义 |
-c | 只打印匹配的文本行的次数,不显示文本内容。 |
-i | 匹配时忽略字母大小写 |
-h | 当搜索多个文件,不显示匹配文件名前缀。 |
-l | 只列出含义匹配的文本行的文件的文件名,不显示其具体匹配的内容。 |
-n | 列出所有匹配的文本行,并显示行号 |
-s | 不显示关于不存在或无法读取文件的错误信息 |
-v | 只显示不匹配的文本行,反向选择,显示与搜索字符串不相符的行。 |
-w | 匹配整个单词 |
-x | 匹配整个文本行 |
-r | 递归搜索,不仅搜索当前目录,还有各级子目录 |
-E | 开启扩展(extend)的正则表达式 |
示例
过滤网卡中的IP地址
3、元字符操作案例
3.1.查找特定字符
查找特定字符非常简单,如执行以下命令即可从 test.txt 文件中查找出特定字符“the”所在位置。其中“-n”表示显示行号、“-i”表示不区分大小写。命令执行后,符合匹配标准的字符, 字体颜色会变为红色。
3.2、利用中括号“[]”来查找集合字符
3.3、查找行首“^”与行尾字符“$”
3.4、查找任意一个字符“.”与重复字符“*”
3.5、查找连续字符范围“{}”
4、cut、sort、uniq、tr
4.1、cut:列截取工具
使用说明:cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一
4.2、sort:排序工具
sort 是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。例如数据和字符的排序就不一样
常用选项 | 含义 |
-t | 指定分隔符,默认使用[Tab]吧 键或空格分隔 |
-k | 指定排序区域,哪个区间排序 |
-n | 按照数字进行排序,默认是以文字形式排序 |
-u | 等同于 uniq,表示相同的数据仅显示一行,注意:如果行尾有空格去重就不成功 |
-r | 反向排序,默认是升序,-r就是降序 |
-o | 将排序后的结果转存至指定文件 |
-f | 忽略大小写,会将小写的字母都转换为大写字母来进行比较 |
-b | 忽略每行前面的空格 |
4.3、uniq:去重工具
1、主要用于去除连续的重复行
2、注意:是连续的行,所以通常和sort结合使用先排序使之变成连续的行再执行去重操作,否则不连续的重复行他不能去重
4.4、tr:修改工具
它可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符
总结
正则表达式grep
sort
uniq
tr