当前位置:网站首页>正则表达式与文本处理器
正则表达式与文本处理器
2022-08-08 19:39:00 【千城泪1999】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、正则表达式概述
1.正则表达式的定义
正则表达式又称正规表达式、常规表达式。在代码中常简写为 regex、regexp 或 RE。正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,简单来说, 是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定字符串。
正则表达式是由普通字符与元字符组成的文字模式。模式用于描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。其中普通字符包括大小写字母、数字、标点符号及一些其他符号,元字符则是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
正则表达式一般用于脚本编程与文本编辑器中。很多文本处理器与程序设计语言均支持正则表达式,如前面提到的Perl、Linux系统中常见的文本处理器(grep、egrep、sed、awk)。正则表达式具备很强大的文本匹配功能,能够在文本海洋中快速高效地处理文本。
2.正则表达式用途
对于一般计算机用户来说,由于使用到正则表达式的机会不多,所以无法体会正则表达式的魅力,而对于系统管理员来说,正则表达式则是必备技能之一。
正则表达式对于系统管理员来说是非常重要的,系统运行过程中会产生大量的信息,这些信息有些是非常重要的,有些则仅是告知的信息。身为系统管理员如果直接看这么多的信息数据,无法快速定位到重要的信息,如“用户账号登录失败”“服务启动失败”等信息。这时可以通过正则表达式快速提取“有问题”的信息。如此一来,可以将运维工作变得更加简单、方便。
目前很多软件也支持正则表达式,最常见的就是邮件服务器。在 Internet 中,垃圾/
广告邮件经常会造成网络塞车,如果在服务器端就将这些问题邮件提前剔除的话,客户端就会减少很多不必要的带宽消耗。而目前常用的邮件服务器 postfix 以及支持邮件服务器的相关分析软件都支持正则表达式的比对功能。将来信的标题和内容与特殊字符串进行对比,发现问题邮件就过滤掉。
除邮件服务器之外,很多服务器软件都支持正则表达式。虽然这些软件都支持正则表达式,不过字符串的对比规则还需要系统管理员来添加,所以作为系统管理员,正则表达式是必须掌握的技能之一。
二、基础正则表达式
支持的工具: grep、egrep、sed、awk
元字符 | 作用 |
\ | 转义字符,用于取消特殊符号的的含义 例:!,\n,$等 |
^ | 匹配字符串开始的位置 例:a,the,#,[a-z] |
. | 匹配除\n之外的任何一个字符 例:go.d , g…d |
* | 匹配前面子表达式0次或者多次 例:goo*d,go.*d |
[list] | 匹配list列表中的一个字符 例:go[loa]d,[a-z],[0-9]匹配任意一位数字 |
[^list] | 匹配任意非list列表中的一个字符 例:[0-9],[a-z]匹配任意一位非小写字母 |
{n} | 匹配前面子表达式n次 例:go{2}d,'[0-9]{2}'匹配两位数字 |
{n,} | 匹配前面子表达式不少于n次 例:go{2,}d,'[0-9]{2,}'匹配两位及两位以上的数字 |
{n,m} | 匹配前面子表达式n到m次 例:go{2,3}d,'[0-9]{2,3}'匹配两位到三位数字 |
注: egrep、awk使用{n}、{n,}、{n,m}匹配时“}“前不用加”"
egrep -E -n ‘wo{2}d’ test.txt1/-E用于显示文件中符合条件的字符
egrep -E -n ‘wo{2,3}d’ test.txt
三、扩展正则表达式元字符
支持egrep、awk
元字符 | 作用 |
+ | 匹配前面子表达式一次以上例:go+d,将匹配至少一个o,如god,good,goood等 |
? | 匹配前面子表达式0次或一次 例:go?d,匹配将为gd或者god |
() | 将括号内的字符创作为一个整体 例:g(oo)+d,将匹配oo整体一次以上 |
定位符
^ 匹配输入字符串开始的位置
$匹配输入字符串结尾的位置
非打印字符
\n匹配一个换行符
\r匹配一个回车符
\t匹配一个制表符
四、grep命令
grep命令使用正则表达式来搜索文本,并且把匹配的文本打印出来
格式:grep [options] pattern [file]
option表示选项,pattern表示匹配的模式。file表示一系列文件名。
常用选项:
-c 只打印匹配的文本行的次数,不显示文本内容。
-i 匹配时忽略字母大小写
-h 当搜索多个文件,不显示匹配文件名前缀。
-l 只列出含义匹配的文本行的文件的文件名,不显示其具体匹配的内容。
-n 列出所有匹配的文本行,并显示行号
-s 不显示关于不存在或无法读取文件的错误信息
-v 只显示不匹配的文本行,反向选择,显示与搜索字符串不相符的行。
-w 匹配整个单词
-x 匹配整个文本行
-r 递归搜索,不仅搜索当前目录,还有各级子目录
-E 开启扩展(extend)的正则表达式
--color=auto 可以将找到的关键词部分加上颜色的显示
五、sort 排序工具
sort 是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。例如数据和字符的排序就不一样
sort [选项] 参数
常用选项
-t:指定分隔符,默认使用[Tab]吧 键或空格分隔
-k:指定排序区域,哪个区间排序
-n:按照数字进行排序,默认是以文字形式排序
-u:等同于 uniq,表示相同的数据仅显示一行,注意:如果行尾有空格去重就不成功
-r:反向排序,默认是升序,-r就是降序
-o:将排序后的结果转存至指定文件
-f: 忽略大小写,会将小写的字母都转换为大写字母来进行比较
-b: 忽略每行前面的空格
六、tr:修改工具
它可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符
用法:tr [选项]… SET1 [SET2]
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
常用选项
-d 删除字符
-s 删除所有重复出现的字符,只保留第一个
七、uniq:去重工具
主要用于去除连续的重复行
注意:是连续的行,所以通常和sort结合使用先排序使之变成连续的行再执行去重操作,否则不连续的重复行他不能去重
uniq [选项] 参数
-c:对重复的行进行计数;
-d:仅显示重复行;
-u:仅显示出现一次的行
八、cut:列截取工具
使用说明:cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一
选项:
-b:按字节截取
-c:按字符截取,常用于中文
-d:指定以什么为分隔符截取,默认为制表符
-f:通常和-d一起
注意:
cut只擅长于处理单个字符为间隔的文本,-b只能分割字母,-c既可以分割字母也可以分割中文
边栏推荐
猜你喜欢
室外光纤资源管理——可视化管理平台
一文教你普罗米修斯Prometheus的基础应用
SSM project integration, integrated case
网络工程师怎么系统性学习?这份网工资料包帮你解决
How can recommender systems be trusted?A review of the latest "Trusted Recommender System" from Rutgers University, a 43-page pdf explaining the composition and technology of trusted RS
Ability in general, but it can be large horizontal jump freely?Where is the better?
What are the three main aspects of digital factory construction?
从 VLAN 到 IPVLAN: 聊聊虚拟网络设备及其在云原生中的应用
[极客大挑战 2019]BuyFlag&&[HCTF 2018]admin
golang流程控制:if分支、switch分支和fallthrough switch穿透
随机推荐
信号与系统【x(t)*h(t)=y(t) 求h(t)】附matlab代码
shell的各种三角形
5 IPOs, Internet home improvement is not as simple as Tubatu thinks
通达信炒股软件正规吗?安全吗?
LeetCode #104.二叉树的最大深度
如何在EasyDSS中使用ffmpeg实现点播视频的拼接与合成?
继承的详解
无标题文章
一文教你普罗米修斯Prometheus的基础应用
Ansible自动化运维工具(一)安装及模块
PX4-做飞控二次开发需要知道的事情-Cxm
软件测试基础笔记
【无标题】
uni-app微信小程序如何渲染markdown
BP neural network
laravel run scheduler command on weekdays (except holidays)
Implement the entire process of Mock API with tools
软考中级网络工程师全面学习笔记第2版(5万字)+配套视频及课件
hdu1495 非常可乐 (广搜)
Wps文档云同步如何开启?Wps打开文档云同步的方法