shell脚本值之正则表达式

   日期:2024-12-30     作者:2p20y       评论:0    移动:http://3jjewl.riyuangf.com/mobile/news/15214.html
核心提示:正则表达式,又称规则表达式,(英语:Regular Expression)在代码中常简写为 regex、regexp 或


正则表达式,又称规则表达式(英语:Regular Expression)在代码中常简写为 regex、regexp 或 RE ,计算机科学的一个概念。
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本
正则表达式不只有一种,而且 Linux 中不同的程序可能会使用不同的正则表达式,如
工具:grep sed awk egrep

正则表达式——通常用于判断语句中,用来检查某一字符串是否满足某一格式

正则表达式是由普通字符与元字符组成

普通字符:包括大小写字母、数字、标点符号及一些其他符号
元字符:是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式

LINUX 中常用的有两种正则表达式引擎
基础正则表达式:BRE
扩展正则表达式:ERE

 

选项 含义

 

示例
例1:统计root字符总行数

 

例2:不区分大小写查找the所有的行

 

例3:过滤出IP

 
 

常见元字符(支持的工具:grep、egrep、sed、awk

 
 
 

示例
:查看 test.txt 文件中以 t 开头的行

 

:查看 test.txt 文件中以 s 结尾的行

 

:查看 test.txt 文件中 ,W后面有两个O的单词

 

:查看 test.txt 文件中 ,W后面有两个或多个O的单词

 

:“*”符号匹配任意字母数字

 

匹配字符时,匹配的是上一个字符的次数

通常情况下会使用基础正则表达式就已经足够了,但有时为了简化整个指令,需要使用 范围更广的扩展正则表达式

与基础正则表达式类型相同,扩展正则表达式也包含多个元字符,常见的扩展正则表达 式的元字符主要包括以下几个

 

示例
+

 
 

 
 

|

 
 

 
 

+

 
 
 

1.查找特定字符

若反向选择,如查找不包含“the”字符的行,则需要通过 grep 命令的“-v”选项实现,并配合“-n”一起使用显示行号

2.利用中括号“[]”来查找集合字符

在上述命令的执行结果中发现“woood”与“wooooood”也符合匹配规则,二者均包含“w”。其实通过执行结果就可以看出,符合匹配标准的字符加粗显示,而上述结果中可以得知, “#woood #”中加粗显示的是“ooo”,而“oo”前面的“o”是符合匹配规则的。同理“#woooooood #”也符合匹配规则。

3.查找行首“^”与行尾字符“$”

查询以小写字母开头的行可以通过“ ^ [a-z]”规则来过滤,查询大写字母开头的行则使用
“ ^ [A-Z]”规则,若查询不以字母开头的行则使用“^ [ ^a-zA-Z] ” 规则

“^”符号在元字符集合“[]”符号内外的作用是不一样的,在“[]”符号内表示反向选择,在“[]” 符号外则代表定位行首。反之,若想查找以某一特定字符结尾的行则可以使用“$”定位符。例如,执行以下命令即可实现查询以小数点(.)结尾的行。因为小数点(.)在正则表达式中也是一个元字符(后面会讲到,所以在这里需要用转义字符“”将具有特殊意义的字符转化成普通字符

当查询空白行时,执行“grep -n‘^$’test.txt”命令即可

4.查找任意一个字符 “ . ” 与重复字符 “ * ”

5.查找连续字符范围“{}”

使用了“.”与“*”来设定零个到无限多个重复的字符,如果想要限制一个范围内的重复的字符串该如何实现呢?例如,查找三到五个 o 的连续字符,这个时候就需要使用基础正则表达式中的限定范围的字符“{}”。因为“{}”在 Shell 中具有特殊意义,所以在使用“{}”字符时,需要利用转义字符“”,将“{}”字符转换成普通字符。“{}”字符的使用方法如下所示

使用说明

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

 

常用选项

 

示例

例1:截取passwd文件的第一列

 
 

例2:截取passwd文件的第一列和第三列

 
 

例3:截取passwd文件的第一列到第三列

 
 

例4:截取who查询结果的第三个字节

 
 

例5:截取name文件中的第一个文字

 
 
 

是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。例如数据和字符的排序就不一样

 

常用选项

 

示例

 
 
 

主要用于去除连续的重复行

注意:是连续的行,所以通常和sort结合使用先排序使之变成连续的行再执行去重操作,否则不连续的重复行他不能去重

 

常用选项

 
 

例1:统计重复行的次数,不连续的重复行他不算做重复行

 
 

例2:结合sort使用就是我们想要的效果

 
 

例3:结合sort使用,过滤出重复行

 
 

例4:结合sort使用,去重

 
 

例5:也可以直接用sort -u

 
 
 
 

可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符

 

常用选项

 
 

例1:将fruit文件中的小写a-z字母替换成大写的A-Z

 
 

例2:替换(是一 一对应的字母的替换

 
 

例3:把替换的字符用单引号引起来,包括特殊字符

 
 

例4:多个字符替换成一个

 
 

例5:删除换行符

 
 

例6:对p字符去重,只保留第一个

 
 

例7:遇到多个回车只保留一个回车,相当于去除空行

 
特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

举报收藏 0打赏 0评论 0
 
更多>同类最新资讯
0相关评论

相关文章
最新文章
推荐文章
推荐图文
最新资讯
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号