第七章 正则表达式

这篇具有很好参考价值的文章主要介绍了第七章 正则表达式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.1. 概念:

1.2. 基本正则表达式

1.2.1. 常见元字符

1.2.2. POSIX字符类

1.2.3. 示例

1.3. 扩展正则表达式

1.3.1. 概念

1.3.2. 示例


1.1. 概念:

在进行程序设计的过程中,用户会不可避免地遇到处理某些文本的情况。有的时候,用户还需要查找符合某些比较复杂规则的字符串。对于这些情况,如果单纯依靠程序设计语言本身,则往往会使得用户通过复杂的代码来实现。但是,如果使用正则表达式,则会以非常简短的代码来完成

正则表达式是通过一些特殊字符的排列,用以查找、替换、删除一行或多行文字字符串,简单的说,正则表达式就是用在字符串的处理上面的一项表示式。由于正则表达式语法简练,功能强大,得到了许多程序设计语言的支持,包括Java、C++、Perl以及Shell等

1.2. 基本正则表达式

基本正则表达式(Basic Regular Expression,BRE),又称为标准正则表达式,是最早制订的正则表达式规范,仅支持最基本的元字符集。基本正则表达式是POSIX规范制订的两种正则表达式语法标准之一,另外一种语法标准称为扩展正则表达式

1.2.1. 常见元字符

第七章 正则表达式,shell脚本编程,正则表达式,mysql,数据库

1.2.2. POSIX字符类

POSIX字符类是一个形如 [:...:] 的特殊元序列(meta sequence),他可以用于匹配特定的字符范围

第七章 正则表达式,shell脚本编程,正则表达式,mysql,数据库

1.2.3. 示例

[ab] : 检索包含a或包含b的行信息,[ ] 中只能表示一个内容

# 检索包含d或者D的行信息
[root@server ~]# grep -n [dD] /etc/passwd

# 检索包含字母o的行信息
[root@server ~]# grep -n [oo] /etc/passwd

[^ ] : 根据关键字检索后反向显示(反向着色)

# 检索不包含字母o的行信息
[root@server ~]# grep -n [^o] /etc/passwd

# 检索不以r开头且包含oot的行信息
[root@server ~]# grep -n [^r]oot /etc/passwd

[-] : 表示范围,如:[0-9] [a-z] [A-Z] [a-zA-Z]

# 检索包含7-9的行信息
[root@server ~]# grep -n [7-9] /etc/passwd

# 检索包含大写字母的行信息
[root@server ~]# grep -n [A-Z] /etc/passwd

# 检索包含数字和字母的行信息
[root@server ~]# grep -n [0-9a-zA-Z] /etc/sos/sos.conf

# 上例改写
[root@server ~]# grep -n [[:alnum:]] /etc/sos/sos.conf

^行首与$行尾

# 检索root开头的行信息
[root@server ~]# grep -n ^root /etc/passwd

# 检索以#开头的行信息
[root@server ~]# grep -n "^#" /etc/sos/sos.conf

# 检索以"[" 开头的行信息
[root@server ~]# grep -n "^\[" /etc/sos/sos.conf

# 检索以数字结尾的行信息
[root@server ~]# grep -n "[0-9]$" /etc/sos/sos.conf

# 检索空白行
[root@server ~]# grep -n "^$" /etc/sos/sos.conf

# 注意
[root@server ~]# grep -n ^[root] /etc/passwd # 检索以r开头或o开头或t开头,独立对待

[root@server ~]# grep -n ^root /etc/passwd # 检索root开头,整体对待

[root@server ~]# grep -n [^root] /etc/passwd # 检索不包含r或o或t的,反向着色
# 注意:^[] 与 [^] 区别

点(.) 与星号(*)

# 检索以r开头t结尾中间只有2个字符的行信息
[root@server ~]# grep -n r..t /etc/passwd

# 检索至少包含1个w字母的行信息
[root@server ~]# grep -n ww* /etc/passwd

# 检索至少包含2个字母o的行信息
[root@server ~]# grep -n ooo* /etc/passwd

# 检索包含(.)的行信息
[root@server ~]# grep -n "\." /etc/passwd # 需要加双引号

1.3. 扩展正则表达式

1.3.1. 概念

扩展正则表达式(Extended Regular Expression,ERE)支持比基本正则表达式更多的元字符,但是扩展正则表达式对有些基本正则表达式所支持的元字符并不支持。前面介绍的元字符“^”、“$”、“.”、“*”、“[]”以及“[^]”这6个元字符在扩展正则表达式都得到了支持,并且其意义和用法都完全相同,不再重复介绍。接下来重点介绍一下在扩展正则表达式中新增加的一些元字符。

第七章 正则表达式,shell脚本编程,正则表达式,mysql,数据库文章来源地址https://www.toymoban.com/news/detail-840970.html

1.3.2. 示例

# 显示/etc/passwd 中以bash结尾的行信息
[root@server ~]# grep -n "bash$" /etc/passwd
# 找出/etc/passwd中包含三位数或者四位数的行信息
[root@server ~]# grep -n "\<[0-9]\{3,4\}\>" /etc/passwd
# 上例改写
[root@server ~]# grep -n "\<[[:digit:]]\{3,4\}\>" /etc/passwd

# 检索/etc/grub2.cfg文件中,以至少一个空白字符开头,后面跟上非空白字符的行
[root@server ~]# grep -n "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg
# 分析
# ^[[:space:]] :表示以空白字符开头
# \+:grep不支持扩展正则的元字符,需要转义
# [^[:space:]]:不包含非空白字符
# grep可以使用-E参数启用扩展正则,命令改为:
[root@server ~]# grep -nE "^[[:space:]]+[^[:space:]]" /etc/grub2.cfg
# 也可以使用egrep,其支持扩展正则,命令改为
[root@server ~]# egrep -n "^[[:space:]]+[^[:space:]]" /etc/grub2.cfg

                                
# 检索netstat -tan 命令的运行结果中,以“LISTEN”后跟上0个或多个空白字
符结尾的行信息
[root@server ~]# netstat -tan | grep "LISTEN[[:space:]]*$"
# *$表示重复前面0次或多次,$为结尾
                                   
# 检索fdisk -l 命令结果中,包含以/dev/开头后跟上n的行信息
[root@server ~]# fdisk -l | grep "^/dev/n"
                                   
# 检索 ldd /usr/bin/cat 命令结果中的文件路径
[root@server ~]# ldd /usr/bin/cat | grep -oE "/[^[:space:]]+"
# -o:只显示检索命中的标红内容
# -E:启用扩展正则
                                   
# 检索/proc/meminfo文件中,所有以大写A或大写S开头的行信息
[root@server ~]# grep -n "^[AS]" /proc/meminfo
                                   
# 显示/etc/passwd文件中当root、sshd、chrony的相关信息
[root@server ~]# egrep -n "(root|sshd|chrony)" /etc/passwd
# 需要使用egrep,其支持扩展正则
# (|) 会对|左右两边的整体内容进行匹配
                                   
# echo输出一个绝对路径,使用egrep取出其基名
[root@server ~]# echo /etc/yum.repos.d/ | egrep -o [^/]+/?$
                                   
# 检索ifconfig命令结果的1-255之间的整数
[root@server ~]# ifconfig | egrep -o "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"

到了这里,关于第七章 正则表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux Shell :正则表达式

    先来看一句 Shell 代码: dpkg --list : dpkg 是 Debian 系列 Linux 发行版(如 Ubuntu)的包管理工具。 --list 选项用于列出所有已安装的软件包。 | :这是一个管道符号,用于将前一个命令的输出作为后一个命令的输入。在这里, dpkg --list 的输出被直接传递给 grep 命令。 grep -E -o \\\'cu

    2024年02月08日
    浏览(31)
  • Shell编程基础(十三)正则表达式

    格式:^ 表达式 $ 在不同的场景下,定义是一样,但使用要按照具体的命令去调用,中间的表达式都是通用的 普通元字符 所谓元数据,就是描述数据的数据,在这里就是描述正则的数据 ^ 表示正则从字符串 整行 起始位置匹配 ^abc 匹配 以abc开始的字符串 $ 表示正则一直匹配到

    2024年02月14日
    浏览(30)
  • Shell通配符和正则表达式

    目录 ​​​​​​​grep 通配符 正则表达式 grep家族有三大成员分别为:         grep:支持使用基本正则表达式。         egrep:支持使用扩展正则表达式。         fgrep:不支持使用正则表达式,即所有的正则表达式中的元字符都将作为一般字符,仅仅 拥有其字

    2024年02月16日
    浏览(31)
  • Shell脚本攻略:通配符、正则表达式

    目录 一、理论 1.通配符 2.正则表达式 二、实验 1.通配符 2.正则表达式 (1)概念 通配符只用于匹配文件名、目录名等,不能用于匹配文件内容,而且是已存在的文件或者目录。 各个版本的shell都有通配符,这些通配符是一些特殊的字符, 用户可以在命令行的参数中使用这些

    2024年02月07日
    浏览(34)
  • Linux:shell脚本 正则表达式与AWK

    目录   一、正则表达式 1.2元字符  1.3表示次数 1.4位置锚定 1.5分组或其他 1.6扩展正则表达式 1.7grep 二、AWK awk -F ​编辑三、sed 1.sed简介 2.sed工作流程 3.sed命令格式 3.1打印全部内容  3.2 查看文件,打印全部内容  3.3打印指定行内容 3.4支持正则表达式,打印范围内容  3.5#,/关

    2024年02月12日
    浏览(29)
  • Shell 正则表达式及综合案例及文本处理工具

     目录 一、常规匹配 二、常用特殊字符 三、匹配手机号 四、案例之归档文件 五、案例之定时归档文件 六、Shell文本处理工具 1. cut工具 2. awk工具 一串不包含特殊字符的正则表达式匹配它自己 例子,比如说想要查看密码包含root字符串的,可以这样写 cat /etc/passwd | grep root 特

    2024年01月17日
    浏览(39)
  • shell之正则表达式及三剑客grep命令

    什么是正则表达式? 正则表达式是一种描述字符串匹配规则的重要工具 1、正则表达式定义: 正则表达式,又称正规表达式、常规表达式 使用字符串描述、匹配一系列符合某个规则的字符串 普通字符: 大小写字母、数字、标点符号及一些其它符号 元字符: 在正则表达式中具

    2024年02月12日
    浏览(30)
  • Linux:shell脚本:基础使用(4)《正则表达式-grep工具》

    正则表达式定义:         使用单个字符串来描述,匹配一系列符合某个句法规则的字符串 正则表达式的组成:         普通字符串: 大小写字母,数字,标点符号及一些其他符号         元字符:在正则表达式中具有特殊意义的专用字符 正则表达式不能单独使用,需要配

    2024年02月12日
    浏览(27)
  • Linux:shell脚本:基础使用(6)《正则表达式-awk工具》

    awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 awk处理过程: 依次对每一行进行处理,然后输出 1)awk命令会逐行读取文件的内容进行处理 2)awk以’:’为分隔符,将第1行数据格式化为7段,每段数

    2024年02月12日
    浏览(29)
  • linux中shell脚本——shell数组、正则表达式及文件三剑客之AWK

    目录 一.shell数组 1.1.数组分类 1.2.定义数组方法 二.正则表达式 2.1.元字符 2.2.表示次数 2.3.位置锚定 2.4.分组 2.5.扩展正则表达式 三.文本三剑客之AWK 3.1.awk介绍及使用格式 3.2.处理动作 3.3.awk选项 3.4.awk处理模式 2.5.awk常见的内置变量  2.6.if条件判断 1.1.数组分类 ①关联数组:必

    2024年02月12日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包