linux cpu占用率如何看
269
2022-11-02
Shell脚本之正则表达式
前言
Linux命令中,可以使用通配符替代或者识别某一些文件名,通常用于模糊查询的场景,正则表达式与通配符类似,但是匹配的准确度比通配符更高
1.正则表达式定义
正则表达式组成:普通字符:大小写字母、数字、标点符号及一些其他符号
元字符:在正在表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符或表达式)在目标对象中的出现模式
(表达式层次)正则表达式:基础正则表达式、扩展正则表达式
文件处理器:sed 、awk、sort、uniq、tr
linux中文本处理工具:grep egrep sed awk
1.1基础正则表达式常见元字符
(支持的工具: grep、egrep、sed、 awk)
\ 转义字符,用于取消特殊符号的含义,例: \!、\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]、[0-9]匹配任意一位数字[^list] 匹配任意非list列表中的一个字符,取反,例:[^0-9]、[^A-Z0-9]、[^a-z]匹配任意一位非小写字母\{n\} 匹配前面的子表达式n次,例: go\{2\}d、'[0-9]\{2\}'匹配两位数字\{n,\} 匹配前面的子表达式不少于n次\{n,m\} 匹配前面的子表达式n到m次
注: egrep、 awk使用{n}、{n,}、{n, m}匹配时"}"前不用加"\"
1.2扩展正则表达式
? 匹配前面子表达式0次或者1次,即:可有可无+ 与星号相似,表示其前面字符出现一次或多次,但必须出现一次,>=1| 用逻辑OR(或)方式指定正则表达式要是用的模式() 符串分组,将括号中的字符串作为一个整体。
1.3grep命令
grep [选项]..查找条件目标文件-E :开启扩展(Extend) 的正则表达式-c:计算找到'搜寻字符串'的次数-i :忽略大小写的不同,所以大小写视为相同-o:只显示被模式匹配到的字符串-v :反向选择,亦即显示出没有'搜寻字符串,内容的那一行! (反向查找,输出与查找条件不相符的行--color=auto:可以将找到的关键词部分加上颜色的显示喔!-n :顺便输出行号
例1grep 命令
查找root/etc/passwd/的行数
例2 查找ip
要加 \.转义符,不然+会有特殊含义
例3 显示有字符的行数
查找sh开头,rt结尾中间i或o的行数
查找两个o及以上的行数
例4 过滤取反和开头的行数
过滤不以a-z开头两个o及以上结尾
过滤不以A-Z开头两个o及以上结尾
过滤以the开头的行数
过滤以a-z开头的行数
过滤以A-Z开头的行数
过滤不以a-z和A-Z开头的行数
过滤以任意字符,$结尾的行数
显示空行的行数
过滤以w开头,d结尾的行数
*重复字符
2.常见的管道命令
2.1cut
cut:列截取工具 ,显示行中的指定部分,删除文件中指定字段
-b:按字节截取
-c:按字符截取
-d:指定以什么为分隔符截取,默认为制表符
-f:通常和-d一起
例1 截取字符
第一种方法:截取etc/passwd下以:为分隔符的第7列
第二种方法打印
查看当前登录的用户
截取第一列的字符(常用于中文)
截取文本里第2个字符
注意 :cut只擅长处理单个字符为间隔的文本。
2.2 sort
sort:是一个以行为单位对文件内容进行排序的工具,可以根据不同的数据类型来排序,例如数据和字符的排序方法不一样
sort [选项] 参数
常用选项
-t:指定分隔符,默认使用【Tab】键或空格分离-k:指定排序区域,哪个区间排序-n:按照数字进行排序 ,默认是以文字形式排序-u:等同于uniq,表示相同的数据仅显示一行-r:反向排序,默认升序-o:将排序后的结果转存至指定文件
例1升序和降序
不加任何参数,按第一列以字母顺序升序
去除重复的
2.3uniq
主要用于去除连续的重复行
注意:主要是连续的行,所以通常和sort结合使用先排序变成连续的行再执行去操作
【常用选项】
-c:对重复的行进行计数
-d:仅显示重复行
-u:仅显示出现一次的行
例:统计重复与不重复
统计重复行的次数,不连续的重复行不算做重复行
awk输出第一列
2.3 tr工具
tr命令常用来对来自标准输入的字符进行替换、压缩和删除
tr具体的命令语法格式为:tr [选项] [参数]
【常用参数】
-c:取代所有不属于第一字符集的字符;-d:删除所有属于第一字符集的字符;-s:把连续重复的字符以单独一个字符表示;-t:先删除第一字符集较第二字符集多出的字符,做替换
例:替换各种字符
总结:
正则表达式符号和含义较多,分为基础和扩展两类,使用扩展要加转义符,否则会有特殊含义。cut和sort和tr功能各有不同
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~