RHCE——十七、文本搜索工具-grep、正则表达式

news2024/12/31 5:33:17

RHCE

    • 一、文本搜索工具--grep
      • 1、作用
      • 2、格式
      • 3、参数
      • 4、注意
      • 5、示例
        • 5.1 操作对象文件:/etc/passwd
        • 5.2 grep过滤命令示例
    • 二、正则表达式
      • 1、概念
      • 2、基本正则表达式
        • 2.1 常见元字符
        • 2.2 POSIX字符类
        • 2.3 示例
      • 3、扩展正则表达式
        • 3.1 概念
        • 3.2 示例
  • 三、作业
    • 1、作业一
    • 2、作业二
    • 3、作业三

一、文本搜索工具–grep

1、作用

  • grep是linux中一种强大的文件搜索过滤工具,可以按照正则表达式检索文件内容,并把匹配的结果显示到屏幕上(匹配的内容会标红)

2、格式

grep   -参数   条件  文件名

3、参数

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

在这里插入图片描述

4、注意

  • 工作方式:grep可以在一个或多个文件中检索,如果条件中包含了空格,需要使用双引号引起
  • 工作结果:如果搜索成功则返回0状态码,否则为1状态码

5、示例

5.1 操作对象文件:/etc/passwd

  • 作用:记录账户的信息,共分为7段,使用冒号分割
  • 意义:账户名:密码代号x:UID:GID:注释:家目录:登录的Shell
  • 注意:最后一段/sbin/nologin表述不允许登录

5.2 grep过滤命令示例

[root@server ~]# grep  -n  "root"  /etc/passwd
[root@server ~]# grep  -n  "sshd"  /etc/passwd
[root@server ~]# grep  -n  "/sbin/nologin"  /etc/passwd
[root@server ~]# grep  -c  "/bin/bash"  /etc/passwd
[root@server ~]# grep    "/bin/bash"  /etc/passwd  | wc -l
[root@server ~]# grep  -nv  "/sbin/nologin"  /etc/passwd
[root@server ~]# grep  -ni  "d"  /etc/passwd
[root@server ~]# grep  -nA2  "ftp"  /etc/passwd
[root@server ~]# grep  -nB3  "ftp"  /etc/passwd
[root@server ~]# grep  -nC3  "ftp"  /etc/passwd

在这里插入图片描述
在这里插入图片描述

二、正则表达式

1、概念

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

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

2、基本正则表达式

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

2.1 常见元字符

元字符说明
^以某个字符开头 或 行首
$以某个字符结尾 或行尾
.匹配任意单字符
*****对前一项进行0次或者多次重复匹配
{m,n}将前一项字符重复m-n次,{m,},{,n},{m,n}
[]对方括号内的单字符进行匹配
[^]不匹配方括号内的单字符
^[]匹配以某个字符开头的行
()定义一个子表达式
词首【\<或\b】和词尾锚定【\>或者\b】其后面的任意字符必须作为单词首部出现;其前面的任意字符必须作为单词尾部出现
\转义字符,让一些特殊符号失效

2.2 POSIX字符类

  • POSIX字符类是一个形如[:...:]的特殊元序列(meta sequence),他可以用于匹配特定的字符范围
正则表达式描述示例
[:alnum:]匹配任意一个字母或数字字符[[:alnum:]]+
[:alpha:]匹配任意一个字母字符(包括大小写字母)[[:alpha:]]
[:blank:]空格与制表符(横向和纵向)[[:blank:]]*
[:digit:]匹配任意一个数字字符[[:digit:]]?
[:lower:]匹配小写字母[[:lower:]]
[:upper:]匹配大写字母([[:upper:]]+)?
[:punct:]匹配标点符号[[:punct:]]
[:space:]匹配一个包括换行符、回车等在内的所有空白符[[:space:]]+
[:graph:]匹配任何一个可以看得见的且可以打印的字符[[:graph:]]
[:xdigit:]任何一个十六进制数(即:0-9,a-f,A-F)[[:xdigit:]]+
[:cntrl:]任何一个控制字符(ASCII字符集中的前32个字符)[[:cntrl:]]
[:print:]任何一个可以打印的字符[[:print:]]

2.3 示例

  • [ab] : 检索包含a或者b的行信息,[]只能包含一个内容
[root@server ~]# grep  -n  [dD]  /etc/passwd
[root@server ~]# grep  -n  [oo]  /etc/passwd

在这里插入图片描述
在这里插入图片描述

  • [^]:根据关键字反向显示(反向着色)
[root@server ~]# grep  -n  [^o]  /etc/passwd
[root@server ~]# grep  -n  [^r]oot  /etc/passwd

在这里插入图片描述
在这里插入图片描述

  • [-]:表示范围,如:[0-9] [a-z] [A-Z] [a-zA-Z]
[root@server ~]# grep  -nw  [7-9]  /etc/passwd
[root@server ~]# grep  -n  [A-Z]  /etc/passwd
[root@server ~]# grep  -n  [A-G]  /etc/passwd
[root@server ~]# grep  -n  [0-9A-Za-z]  /etc/passwd
[root@server ~]# grep  -n  [[:alnum:]]  /etc/sos/sos.conf 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • ^行首与$行尾
[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开头
[root@server ~]# grep  -n  ^root  /etc/passwd  # 整体对待
[root@server ~]# grep  -n  [^root]  /etc/passwd  # 检索不包含r或不包含o或不包含t,进行反向着色,注意:^[] 与  [^] 区别

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 点(.)与星号(*)
[root@server ~]# grep  -n  r..t  /etc/passwd
[root@server ~]# grep  -n  ooo*    /etc/passwd
[root@server ~]# grep  -n  "\."    /etc/passwd

在这里插入图片描述

  • {m,n} 区间
[root@server ~]# grep  -n  "\<[0-9]\{2\}\>"  /etc/passwd
# {m,n}  描述区间

在这里插入图片描述

3、扩展正则表达式

3.1 概念

  • 扩展正则表达式(Extended Regular Expression,ERE)支持比基本正则表达式更多的元字符,但是扩展正则表达式对有些基本正则表达式所支持的元字符并不支持。前面介绍的元字符“^”、“$”、“.”、“*”、“[]”以及“[^]”这6个元字符在扩展正则表达式都得到了支持,并且其意义和用法都完全相同,不再重复介绍。接下来重点介绍一下在扩展正则表达式中新增加的一些元字符。
元字符说明
?将前一项字符进行0次或者1次的重复匹配
+将前一项进行1次或者多次的重复匹配
(|)匹配|符号左边或者右边的字符

3.2 示例

[root@server ~]# grep  -n  "bash$"  /etc/passwd
[root@server ~]# grep  -n  "\<[[:digit:]]\{3,4\}\>"  /etc/passwd
[root@server ~]# grep  -n  "\<[0-9]\{3,4\}\>"  /etc/passwd
[root@server ~]# egrep  -n  "^[[:space:]]+[^[:space:]]"  /etc/grub2.cfg 
[root@server ~]# grep  -nE  "^[[:space:]]+[^[:space:]]"  /etc/grub2.cfg 
[root@server ~]# grep  -n  "^[[:space:]]\+[^[:space:]]"  /etc/grub2.cfg 
# 注意:grep不支持扩展正则(? + (|)),要想生效,可以使用上述三种方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

# 将netstat  -tan显示结果中以LISTEN开头后跟0个或多个空白字符结尾的行信息
[root@server ~]# netstat  -tan  |  grep  "LISTEN[[:space:]]*$"
# 检索fdisk -l 命令结果中,包含/dev/开头后跟上n的行信息
[root@server ~]# fdisk -l  |  grep  "^/dev/n"
# 显示/etc/passwd中包含root、sshd、chrony的相关信息
[root@server ~]# egrep  -n  "(root|sshd|chrony)"  /etc/passwd
[root@server ~]# grep   -nE  "(root|sshd|chrony)"  /etc/passwd
# 检索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]  )\>"   
# 取出echo输出的绝对路径名中的文件名
[root@server ~]# echo  /etc/yum.repos.d   |  egrep  [^/]+/?$

在这里插入图片描述
在这里插入图片描述

三、作业

1、作业一

编写脚本for1.sh,使用for循环创建20账户,账户名前缀由用户从键盘输入,账户初始密码由用广输入,例如: test1、test2、test3、…、 test10

  • 第一步,创建并编写脚本
[root@server ~]# vim for1.sh

在这里插入图片描述

  • 第二步、执行并查看:
[root@server ~]# bash for1.sh 
请输入用户账户名前缀: test
请输入用户的密码: 123456
[root@server ~]# cat  /etc/passwd  |  tail  -20

在这里插入图片描述

2、作业二

编写脚本for2.sh,使用for循环,通过ping命令测试网段的主机连通性,IP前3段由用户输入,如: 输入192.168.48 ,则pin 192.168.48.125 - 192.168.48.135,将可以ping通的主机IP地址写入到 /tmp/host_up.txt文件中,不能ping通的主机IP地址写入到: /tmp/host_down.txt文件中

  • 第一步、创建并修改脚本文件
[root@server ~]# vim for2.sh

在这里插入图片描述

  • 第二步、执行并查看
[root@server ~]# bash for2.sh 
请输入网段:192.168.13
up ip: 
192.168.13.134 is up

down ip :
192.168.13.125 is down
192.168.13.126 is down
192.168.13.127 is down
192.168.13.128 is down
192.168.13.129 is down
192.168.13.130 is down
192.168.13.131 is down
192.168.13.132 is down
192.168.13.133 is down
192.168.13.135 is down
[root@server ~]# cat /tmp/host_down.txt 

在这里插入图片描述

3、作业三

使用for循环实现批量主机root密码的修改

  • (1) 打开多台主机
  • (2) 使用ssh-keygen命令建立密钥对
  • (3) 多台主机间通过ssh-copy-id进行免密登录(4) 编写脚本for3.sh,通过for循环登录主机修改对方root账户密码

步骤:

  • 第一步:首先打开三台安装好的虚拟机:
    在这里插入图片描述
  • 第二步、再主虚拟机上进行记录其他两台机子的IP地址:
[root@server ~]# vim ip.txt

在这里插入图片描述

  • 第三步、三台主机生成密钥对
    server
    在这里插入图片描述
    NODE1:
    在这里插入图片描述
    NODE2:
    在这里插入图片描述
  • 第四步、将生成的密钥对进行上传:
[root@server ~]# ssh-copy-id  root@192.168.13.135
[root@server ~]# ssh-copy-id  root@192.168.13.136

在这里插入图片描述

  • 第五步、创建并修改脚本
[root@server ~]# vim for3.sh

在这里插入图片描述

  • 第六步,执行脚本:
    在这里插入图片描述
[root@server ~]# bash for3.sh 
请输入密码:123       
更改用户 root 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 root 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]# 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/973194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Apollo】开启Apollo之旅:让自动驾驶如此简单

前言 Apollo 是百度公司推出的自动驾驶平台。它是一个综合性的自动驾驶解决方案&#xff0c;提供了包括感知、决策、规划和控制等核心功能&#xff0c;以及地图、定位、仿真、数据管理等配套工具。 文章目录 前言Apollo 的发展历程Apollo 8.0新特性软件包管理感知框架工具链小…

软件确认测试的七大准则

确认测试 1. 确认软件设计是否依从于软件需求&#xff0c;且软件的每一项需求是否能跟踪到软件设计。 2. 确认状态顺序和状态变化( 功能模块图) 。 3. 确认数据和控制流满足安全性、功能性和性能需求。 4. 确认软件的功能性&#xff0c;硬件、软件和用户接口的一致性&#…

上海亚商投顾:沪指放量大涨超1% 北向资金净买入近70亿元

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数昨日集体反弹&#xff0c;沪指高开高走涨超1%&#xff0c;上证50盘中涨超2%&#xff0c;北证50指数涨…

涉案财物管理系统DW-S405|实现涉案财物智能化管理

涉案财物管理系统&#xff08;智财物DW-S405&#xff09;是依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 东识涉案财物管理系统是一套基于物联网技术的管理方案&#xff0c;旨在规…

孙哥Spring源码第17集

第17集 refresh()-invokeBeanFactoryPostProcessor -一-invokeBeanFactoryPostProcessor的分析过程 【视频来源于&#xff1a;B站up主孙帅suns Spring源码视频】 1、什么是解析顶级注解&#xff1f; PropertySource CompeontScan Configuration Component ImportResour…

第14章 热门数据实时收集

mini商城第14章 热门数据实时收集 一、课题 商品秒杀-热门数据实时收集 二、回顾 1、秒杀设计 2、活动管理 3、搜索管理 4、商品详情处理 5、 数据同步 三、目标 1、掌握热门分析收集方案 2、Lua高级语法 掌握Lua高级语法指令执行顺序 掌握Lua高级语法指令编写位置 …

FPGA GTH 全网最细讲解,aurora 8b/10b编解码,HDMI视频传输,提供2套工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 GT 高速接口解决方案3、GTH 全网最细解读GTH 基本结构GTH 发送和接收处理流程GTH 的参考时钟GTH 发送接口GTH 接收接口GTH IP核调用和使用 4、设计思路框架视频源选择silicon9011解码芯片配置及采集动态彩条视频数据组包GTH aurora 8b/10…

el-select 加多选框使用

解决方法&#xff1a; el-select 添加属性 multiple&#xff0c; <el-form-item label"订单来源&#xff1a;"><el-selectv-model"tableFrom.userType"clearablemultipleplaceholder"请选择"class"selWidth"><el-opt…

Android图形-架构1

目录 引言 Android图形的关键组件&#xff1a; Android图形的pipeline数据流 BufferQueue是啥&#xff1f; 引言 Android提供用于2D和3D图形渲染的API&#xff0c;可与制造商的驱动程序实现代码交互&#xff0c;下面梳理一下Android图形的运作原理。 应用开发者通过三种方…

pm2 运行springboot项目

创建springboot项目打包 注意安装java版本必须和打包的java版本一致 java安装 安装pm2 安装nodejs 通过npm安装pm2 配置json pm2.json {"name": "test01","script": "D:\\jdk-17.0.6\\bin\\java.exe","args": ["-D…

无涯教程-JavaScript - EDATE函数

描述 EDATE函数返回表示日期的序列号,该序列号是在指定日期(start_date)之前或之后的月份数。 使用EDATE来计算到期日或到期日,该到期日或到期日与发行日期在当月的同一天。 语法 EDATE (start_date, months)争论 Argument描述Required/OptionalStart_date 代表开始日期的…

2023年特色小镇行业研究报告

第一章 行业概况 1.1 定义 特色小镇&#xff0c;是指以特定产业、文化、旅游、历史等特色为依托&#xff0c;以小镇为载体&#xff0c;通过优化提升小镇的综合功能和服务能力&#xff0c;形成独特的区域品牌和产业集群&#xff0c;进而推动区域经济社会发展的一种新型城镇化形…

【Unity编辑器扩展】| 顶部菜单栏扩展 MenuItem

前言【Unity编辑器扩展】 | 顶部菜单栏扩展 MenuItem一、创建多级菜单二、创建可使用快捷键的菜单项三、调节菜单显示顺序和可选择性四、创建可被勾选的菜单项五、右键菜单扩展5.1 Hierarchy 右键菜单5.2 Project 右键菜单5.3 Inspector 组件右键菜单六、AddComponentMenu 特性…

AUTOSAR简介及分层架构

这里写目录标题 1、AUTOSAR简介2、AUTOSAR的分层架构2.1、应用软件层(ASW)2.2、运行时环境(RTE)2.3、基础软件层(BSW)2.4、微控制器-MCAL层 1、AUTOSAR简介 AUTOSAR&#xff08;AUTomotive Open System ARchitecture&#xff09;是一种为汽车软件开发提供开放化、标准化、可重…

一篇文章教会你SpringMVC

目录 1.什么是SpringMVC 2.SpringMVC工作流程 3.SpringMVC核心组件 4.SpringMVC的配置流程 4.1导入POM依赖 4.2在WEB-INF下添加springmvc-servlet.xml(spring-mvc.xml) 4.3 修改web.xml 创建一个Controller用来存放web层的方法和内容 创建一个前端页面用来做测试展示 前言…

一种影像比对快速提取建筑物要素变化的方法

李和军1,2 李 敏3 李楚钰1,2 唐廷元1,2 胡日查4 (1. 北京市测绘设计研究院, 北京, 100038;2. 城市空间信息工程北京市重点实验室, 北京 100038;3. 北京市地质矿产勘查院信息中心, 北京, 100195;4. 内蒙古测绘地理信息中心, 内蒙古 呼和浩特, 010000) 摘 要&#xff1a;本文围绕…

双向交错CCM图腾柱无桥单相PFC学习仿真与实现(4)一些优化总结

前言 上一次说到单相的PFC硬件功能已经实现&#xff0c;THD3.15%满足了国标要求的范围&#xff0c;还是有优化的空间&#xff0c;目前系统设计的是6.6Kw&#xff0c;220V交流输出&#xff0c;400-800V直流输出。目前基本功能完成&#xff0c;但是还有很多细节需要优化&#xf…

飞行动力学 - 第16节-part2-放宽静稳定性 之 基础点摘要

飞行动力学 - 第16节-part2-放宽静稳定性 之 基础点摘要 1. 放宽静稳定性(RSS, Relax Static Stability )2. 纵向增稳器3. 阻力损失4. 参考资料 1. 放宽静稳定性(RSS, Relax Static Stability ) - 稳定飞机&#xff1a;为保证稳定&#xff0c;需要一个抬头力矩&#xff0c;平尾…

软件产品测试报告有哪些测试内容

软件测试内容 随着软硬件技术的发展&#xff0c;计算机领域的应用越来越广泛&#xff0c;软件的功能越来越强大&#xff0c;软件也越来越复杂。计算机软件是计算机应用的核心&#xff0c;其质量与计算机应用系统的成败有关&#xff0c;这使得确保软件的质量和高度可靠性尤为重…

Webpack5入门到原理

Webpack5学习 尚硅谷Webpack5新版视频教程 B站直达&#xff1a;https://www.bilibili.com/video/BV14T4y1z7sw 百度网盘&#xff1a;https://pan.baidu.com/s/114lJRGua2uHBdLq_iVLOOQ 提取码&#xff1a;yyds 阿里云盘&#xff1a;https://www.aliyundrive.com/s/UMkmCzdWsGh&…