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

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 updown 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.mzph.cn/news/73219.shtml

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

相关文章

华为云云耀云服务器L实例评测|用docker搭建frp服务测试

华为云云耀云服务器L实例评测&#xff5c;用docker搭建frp服务测试 0. 环境 华为云耀云L实例EulerOS 1. 安装docker 检查yum源&#xff0c;本EulerOS的源在这里&#xff1a; cd /etc/yum.repos.d 更新源 yum makecache 安装 yum install -y docker-engine 运行测试 d…

ATFX汇市:美初请失业金人数21.6万人,连降四期,劳动力供需偏紧

ATFX汇市&#xff1a;9月7日&#xff0c;美国劳工部数据显示&#xff1a;美国至9月2日当周初请失业金人数最新值21.6万人&#xff0c;低于前值22.9万人&#xff08;修正前22.8万人&#xff09;&#xff0c;低于预期值23.4万人。回顾历史数据&#xff0c;美国初请失业率人数从25…

LabVIEW检测润滑油中的水分和铁颗粒

LabVIEW检测润滑油中的水分和铁颗粒 润滑油广泛应用于现代机械设备&#xff0c;由于工作环境日益恶劣&#xff0c;润滑油经常被水分乳化&#xff0c;加速对机械设备的腐蚀。此外&#xff0c;润滑油还受到机械零件摩擦中产生的Fe颗粒的污染&#xff0c;削弱了其机械润滑效果。润…

操作视频的开始与暂停

调用 ref.current.play() 方法来播放视频&#xff1b; 如果视频需要暂停&#xff0c;我们调用 ref.current.pause() 方法来暂停视频。 通过 useRef 创建的 ref 操作视频的开始与暂停 当用户点击按钮时&#xff0c;根据当前视频的状态&#xff0c;我们会开始或暂停视频&…

图解 LeetCode 算法汇总——链表

本文首发公众号&#xff1a;小码A梦 一般数据主要存储的形式主要有两种&#xff0c;一种是数组&#xff0c;一种是链表。数组是用来存储固定大小的同类型元素&#xff0c;存储在内存中是一片连续的空间。而链表就不同于数组。链表中的元素不是存储在内存中可以是不连续的空间。…

redis核心数据结构

redis下载地址&#xff1a;Download | Redis linux进入redis目录首先使用make命令进行c的编译&#xff0c;修改redis.conf文件&#xff1a; daemonize yes #后台启动 protected-mode no #关闭保护模式&#xff0c;开启的 # 需要注释掉bind #bind 127.0.0.1&#xff08;bind…

2023-简单点-编译是什么?gcc是什么?

编译目的 把一种 程序 变成 另一种更接近机器指令 编译的术语 “接近专家的最快方法第一步&#xff0c;直接了解100行业黑话” 那么来了解一下&#xff0c;编译过程中的黑话&#xff1a; 词法分析语法分析中间代码目标代码代码优化出错管理表格管理 gcc是个什么? 一种编译…

MySQL5.7 在Window平台安装

一、下载 在MySQL的官网下载安装包 MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/ 这里我选择的是x64的ZIP安装包&#xff1b;点击Download下载 这里我选择的是直接开始下载 二、解压与初始化 将下载好的安装包解压&#xff0c;这里我解…

Qt应用开发(基础篇)——向导对话框 QWizard

一、前言 QWizard类继承于QDialog&#xff0c;为有向导界面需求的应用环境提供了一个框架。 对话框窗口 QDialog QWizard向导对话框是一个拥有队列界面的特殊对话框&#xff0c;向导的目的是引导用户一步一步的完成预设的流程。向导常用于软件安装界面向导、硬件线路安装向导、…

安全运营中心(SOC)技术框架

2018年曾经画过一个安全运营体系框架&#xff0c;基本思路是在基础单点技术防护体系基础上&#xff0c;围绕着动态防御、深度分析、实时检测&#xff0c;建立安全运营大数据分析平台&#xff0c;可以算作是解决方案产品的思路。 依据这个体系框架&#xff0c;当时写了《基于主动…

Emgu调用摄像头

1&#xff0c;安装EMgu 2,调用摄像头 public FaceLoad(){InitializeComponent();try{capture new Capture();capture.Start();//摄像头开始工作capture.ImageGrabbed frameProcess;//实时获取图像}catch (NullReferenceException excpt){//MessageBox.Show(excpt.Message);}}…

[docker]笔记-portainer的使用

1、安装完成后输入ip加端口号打开网页&#xff0c;并再相应位置输入初始密码&#xff0c;初始密码自行设置。 2、进入主页后可以看到如下图标&#xff1a; 3、选择docker环境&#xff0c;即可展示目前docker信息 可以看到目前有1个容器&#xff0c;3个卷和4个镜像&#xff0c…

Android获取 H264视频流中的SPS和PPS

代码其实很简单&#xff0c;主要是要知道H264帧数据结构。分析H264码流结构的文章一大把&#xff0c;自己网上搜索一下就知道了。 背景&#xff1a; h264aac封装mp4格式的时候&#xff0c;需要获取视频流的sps,pps。 封装mp4文件格式的大体方案 使用 MediaExtractor 和 Medi…

RT-Thread UART

UART 简介 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;通用异步收发传输器&#xff0c;UART 作为异步串口通信协议的一种&#xff0c;工作原理是将传输数据的每个字符一位接一位地传输。是在应用程序开发过程中使用频率最高的数据总线。 UART …

【已解决】uniapp使用vant-ui中的tab标签页的时候,发现底下红色的切换线不见了

问题截图 解决办法 按F12查看vant-ui源码你会发现他的Tab标签页里面有个width&#xff0c;但是我们引入到uniapp之后发现width没有了&#xff08;不知道什么情况&#xff0c;可能是兼容问题吧&#xff09; 所以我们解决的办法&#xff0c;只需要在App.vue中给全局.van-tabs__l…

ARM+Codesys标准通用型控制器

整机工业级设计&#xff0c;通讯外设经过隔离保护 电源宽电压设计(9~36V DC ) 丰富的通讯接口&#xff0c;满足多种场合控制和通讯需求 四核工业级处理器&#xff0c;高性能&#xff0c;低功耗&#xff0c;高可靠性 机身无风扇设计&#xff0c;外壳小巧 搭载内核 100% 自主…

掌动智能国产化测试工具的重要性与优势

在信息技术领域的快速发展下&#xff0c;对于软件和硬件产品的质量和性能要求也日益提高。同时针对信创要求&#xff0c;国产化测试工具在这个过程中发挥着重要的作用&#xff0c;不仅能够提升产品的可靠性和稳定性&#xff0c;还能够降低测试成本和提高测试效率。作为国内领先…

2023高教社杯 国赛数学建模A题思路 - 定日镜场的优化设计

1 赛题 A 题 定日镜场的优化设计 构建以新能源为主体的新型电力系统&#xff0c; 是我国实现“碳达峰”“碳中和”目标的一项重要 措施。塔式太阳能光热发电是一种低碳环保的新型清洁能源技术[1]。 定日镜是塔式太阳能光热发电站(以下简称塔式电站)收集太阳能的基本组件&…

常见项目管理中npm包操作总结

前言 我们在日常工作中&#xff0c;可能需要下载包、创建包、发布包等等。本篇推文将记录日常项目中关于npm包的操作。 引用包 npm仓库公开的包我们都可以通过npm install的命令进行引用下载。 而我们开发的业务公共组件需要在公司内部项目公共引用&#xff0c;而不希望公开为外…

使用 System.exit() 来优雅地终止 Spring Boot 项目

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; 使用 System.exit() 来优雅地终止 Spring Boot 项目 ⏱️ 创作时间&am…