RHCE---正则表达式

文章目录


前言


一. 文本搜索工具

  • grep是linux中一种强大的文件搜索过滤工具,可以按照正 则表达式检索文件内容,并把匹配的结果显示到屏幕上 (匹配的内容会标红)
  • grep可以在一个或多个文件中检索,如果条件 中包含了空格,需要使用双引号引起 工作结果:如果搜索成功则返回0状态码,否则为1状态码

格式:

复制代码
grep   -参数   "条件" 文件名   

参数:
-i     忽略大小写
-c     统计匹配的行数
-v     取反,不显示匹配的行
-w 匹配单词
-E 等价于egrep,即启用扩展正则表达式
-n 显示行号
-rl 将指定目录内的文件打印
-A数字   匹配行及以下n行
-B数字   匹配行及以上n行
-C数字   匹配行及上下n行
-q 静默模式,没有任何内容输出,使用$?来判断是
否执行成功
-o     只显示匹配的内容

案列:

案例:检索不能登录的账号名

复制代码
[root@server ~]# grep -n "/sbin/nologin" /etc/passwd
#检索能登录的使用grep -vn
  • #检索文件中包含sshd的行及以上5行

    [root@timeserver ~]# grep -nB5 "sshd" /etc/passwd

  • 检索 文件系统信息中 / 目录

    [root@timeserver ~]# df -h | grep "/"

  • #grep是能进行模糊匹配,精确匹配需要使用-w

    #grep是能进行模糊匹配,精确匹配需要使用-w
    [root@timeserver ~]# df -h | grep -w "/"

  • #-o参数只显示匹配的内容

    #-o参数只显示匹配的内容
    [root@timeserver ~]# df -h | grep -wo "/"
    /

二.正则表达式

  • 在Shell脚本中,正则表达式是一种强大的文本处理工具,用于匹配、搜索和替换字符串

元字符

|--------|-------------------------|
| 元字符 | 作用 |
| .(点号) | 匹配任意一个字符 |
| * | 匹配前面的字符0次或多次 |
| + | 匹配前一个字符出现1次或多次。 |
| ? | 匹配前一个字符出现0次或1次。 |
| ^ | 匹配字符串的开头。 |
| $ | 匹配字符串的结尾。 |
| \[\] | 匹配字符\[\]集中的任意一个字符 |
| \^ | 匹配除字符集中的任意一个字符以外的字符。 |
| () | 表示一个子表达式,可以用于分组、捕获或引用。 |
| | | 表示逻辑或,匹配两个或多个表达式中的任意一个。 |
| \ | 用于转义元字符或特殊字符 |

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

复制代码
# 检索包含d或者D的行信息
[root@server ~]# grep -n [dD] /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 [0-9a-zA-Z] /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

  • 检索以r开头或o开头或t开头,独立对待

    [root@server ~]# grep -n ^[root] /etc/passwd

点(.) 与星号(*)

  • 检索以r开头t结尾中间只有2个字符的行信息

    [root@server ~]# grep -n r..t /etc/passwd
    #..代表任意两个字符

  • 检索至少包含1个w字母的行信息

    [root@server ~]# grep -n ww* /etc/passwd
    #会对左边的字符重复匹配0次或多次
    #写两个ww为了防止
    对左边的字符匹配0次

扩展正则

|------|---------------------|
| ? | 将前一项字符进行0次或者1次的重复匹配 |
| + | 将前一项进行1次或者多次的重复匹配 |
| (|) | 匹配|符号左边或者右边的字符 |

  • 使用扩展正则表达式是,需要添加参数grep -e 或 使用egrep

    显示/etc/passwd 中以bash结尾的行信息

    [root@server ~]# grep -n "bash$" /etc/passwd


总结

相关推荐
言乐622 分钟前
Python加速器4跨境网络加速器
运维·服务器·开发语言·网络·python
蓝速科技3 小时前
医院导诊 AI 数字人一体机场景适配与落地指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理·技术分享
H_oRIZoN_4 小时前
Linux入门DAY41(51 单片机 串口与通信协议)
linux·运维·单片机
小马同学-5 小时前
OpenStack 使用实战:Web 界面与 CLI 命令行实验
运维·云计算·openstack
GeW6 小时前
RHCE备考别瞎学!按这个计划走,30天提高通过率,快速拿证
linux
Escalating_xu6 小时前
【System V 信号量】从 P/V 原语到 Builder 封装:写出可控、可清理的进程互斥组件
java·linux·开发语言·jvm
傲世仙尊6 小时前
System V 进程间通信详解:共享内存、消息队列与信号量(CSDN博客)
linux·开发语言·c++
码农小韩6 小时前
Linux应用开发(六)——进程间通信
linux·linux驱动·嵌入式软件开发·嵌入式操作系统·linux应用
网安老伯6 小时前
都2026年了,还在问网络安全怎么入门?看完这一篇你就懂了
运维·计算机网络·web安全·网络安全·wireshark·密码学·网络攻击模型
小祺先生7 小时前
mt7921 debian系统 如何安装驱动
运维·网络·debian