【Linux】正则表达式实验操作实例

news2024/10/5 15:26:40

正则表达式是一种强大的工具,用于在文本中查找、匹配和替换特定的字符串模式。

实验目的

  1. 掌握正则表达式的表达方式
  2. 掌握grep/egrep命令的用法
  3. 掌握sed 命令的用法
  4. 掌握awk命令的用法

正则表达式

  • 实验目的
  • 实验内容
  • 实验过程
    • 创建grep文件来进行如下操作
    • 用sed命令完成下列要求
    • 用awk 命令完成下列要求
    • 用所学命令完成下列要求

实验内容

1. 写出满足下列条件的所有行的正则表达式:

  • 以“a”开头;
    以“b”结尾;
    以“a”开头,中间任意,最后以“b”结尾;
    以“c”“d”或“e”开头;
    包含“f”,它后面紧跟着“g”;
    包含“f”,隔1个字母之后是“g”;
    以小写字母开头;
    包含数字;
    以“h”开头,含有字母“i”;
    只含有4个字母;
    只含有4个字母,但不包含“j”。

2. 用sed命令完成下列要求:

  • ①把/etc/passwd复制到/rool/pwd.txt,用scd打印所有行;
    ②打印pwd. txt 的3到7行;
    ③打印pwd.txt 中包含‘root’的行;
    ④删除pwd. txt 的14行以及以后所有行;
    ⑤删除 pwd. txt 中包含‘bash’的行;
    ⑥替换 pwd. txt 中‘root’为‘toor’;
    ⑦替换 pwd.txt 中‘/sbin/nologin’为‘/bin/login’
    ⑧删除 pwd. txt中2到8行中所有的数字;
    ⑨删除pwd.txt中所有特殊字符(除了数字以及大小写字母);
    ⑩在 pwd.txt 中10行到末行最前面加‘aaa:’。

3. 用awk 命令完成下列要求:

  • ①用awk 打印整个pwd.txt;
    ②查找所有包含‘bash’的行;
    ③用‘:’作为分隔符,查找第三段等于0的行;
    ④用‘:’作为分隔符,查找第一段为‘root’的行,并把该段的‘root’换成‘toor’(可以连同sed一起使用);
    ⑤用‘:’作为分隔符,打印最后一段;
    ⑥打印行数大于10的所有行;
    ⑦用‘:’作为分隔符,打印所有第三段小于第四段的行;
    ⑧用‘:’作为分隔符,打印第一段以及最后一段,并且中间用‘@’连接(例如,第一行的形式’ root@ /bin/bash‘)。

4. 用所学命令完成下列要求:

  • ①取得/root 文件的权限对应的数字内容,如-rwxr-xr-x为755,要求使用命令取得755或0755 这样的数字(至少两种方法完成);
    ②取得 Linux 操作系统对应的合法IP 地址,如192.168.136.100,要求使用命令取得类似这样的IP 地址(至少两种方法完成)。

实验过程

  • 创建一个如下内容的grep.txt文件:
123rot:x:0:0:/rot:/bin/bash
123operator:x:11:0:operator:/root:/sbin/nologin
123operator:x:11:0:operator:/rooot:/sbin/nologin
123roooot:x:0:0:/rooooot:/bin/bash
1231111111111111111111111111111111111

创建grep文件来进行如下操作

  1. 写出满足下列条件的所有行的正则表达式:
    为了验证正则表达式是否正确可以根据题目在grep文件中增添一些字符串。
  • ①以“a”开头;
    ②以“b”结尾;
    ③以“a”开头,中间任意,最后以“b”结尾;
    ④以“c”“d”或“e”开头;
    ⑤包含“f”,它后面紧跟着“g”;
    ⑥包含“f”,隔1个字母之后是“g”;
$ sudo grep '^a' grep.txt
$ sudo grep 'b$' grep.txt
$ sudo grep '^ab$' grep.txt
$ sudo grep '^ab$' grep.txt
$ sudo grep '^[c-e]' grep.txt
$ sudo grep '{fg}' grep.txt
$ sudo grep 'f[^g]g' grep.txt

在这里插入图片描述

  • ⑦以小写字母开头;
    ⑧包含数字;
    ⑨以“h”开头,含有字母“i”;
    ⑩只含有4个字母;
    ⑪只含有4个字母,但不包含“j”。
$ sudo grep '^[a-z]' grep.txt
$ sudo grep '^[0-9]' grep.txt
$ sudo grep '^h\(.*\)i' grep.txt
$ sudo grep '[a-zA-Z]{4}' grep.txt
$ sudo grep '[a-fh-zA-Z]{4}' grep.txt

在这里插入图片描述

用sed命令完成下列要求

  • ①把/etc/passwd复制到/rool/pwd.txt,用scd打印所有行;
$ sudo cp /etc/passwd /root/pwd.txt
$ sudo sed -n '1,$'p /root/pwd.txt

在这里插入图片描述

  • ②打印pwd. txt 的3到7行;
    ③打印pwd.txt 中包含‘root’的行;
    ④删除pwd. txt 的14行以及以后所有行;
    ⑤删除 pwd. txt 中包含‘bash’的行;
$ sudo sed -n '3,7'p /root/pwd.txt
$ sudo sed -n '/root/'p /root/pwd.txt
$ sudo sed -n '14,$'d /root/pwd.txt
$ sudo sed -n '/bash/'p /root/pwd.txt

在这里插入图片描述

  • ⑥替换 pwd. txt 中‘root’为‘toor’;
$ sudo sed -n '1,$s/root/toor/g' /root/pwd.txt
$ sudo sed -n '1,$'p /root/pwd.txt

在这里插入图片描述

  • ⑦替换 pwd.txt 中‘/sbin/nologin’为‘/bin/login’
$ sudo sed -n '1,$s@/sbin/nologin@/bin/login@g' /root/pwd.txt
$ sudo sed -n '1,$'p /root/pwd.txt

在这里插入图片描述

  • ⑧删除 pwd. txt中2到8行中所有的数字;
$ sudo sed -n '2,8s/[0-9]//g' /root/pwd.txt
$ sudo sed -n '1,$'p /root/pwd.txt

在这里插入图片描述

  • ⑨删除pwd.txt中所有特殊字符(除了数字以及大小写字母);
$ sudo sed 's/[^0-9a-zA-Z]//g' /root/pwd.txt

在这里插入图片描述

  • ⑩在 pwd.txt 中10行到末行最前面加‘aaa:’。
$ sudo sed -n '10,$s/^.*$/aaa&/' /root/pwd.txt
$ sudo sed -n '1,$'p /root/pwd.txt

在这里插入图片描述

用awk 命令完成下列要求

  • ①用awk 打印整个pwd.txt;

在这里插入图片描述

  • ②查找所有包含‘bash’的行;
    ③用‘:’作为分隔符,查找第三段等于0的行;

在这里插入图片描述

  • ④用‘:’作为分隔符,查找第一段为‘root’的行,并把该段的‘root’换成‘toor’(可以连同sed一起使用);

在这里插入图片描述

  • ⑤用‘:’作为分隔符,打印最后一段;

在这里插入图片描述

  • ⑥打印行数大于10的所有行;

在这里插入图片描述

  • ⑦用‘:’作为分隔符,打印所有第三段小于第四段的行;

在这里插入图片描述

  • ⑧用‘:’作为分隔符,打印第一段以及最后一段,并且中间用‘@’连接(例如,第一行的形式’ root@ /bin/bash‘)。

在这里插入图片描述

用所学命令完成下列要求

  • ①取得/root 文件的权限对应的数字内容,如-rwxr-xr-x为755,要求使用命令取得755或0755 这样的数字(至少两种方法完成);

在这里插入图片描述

  • ②取得 Linux 操作系统对应的合法IP 地址,如192.168.136.100,要求使用命令取得类似这样的IP 地址(至少两种方法完成)。

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

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

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

相关文章

寻找排序数组中的最小值

题目描述 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次…

如何水出第一篇SCI:SCI发刊历程,从0到1全过程经验分享!!!

如何水出第一篇SCI:SCI发刊历程,从0到1全路程经验分享!!! 详细的改进教程以及源码,戳这!戳这!!戳这!!!B站:Ai学术叫叫兽e…

机器学习(30)

文章目录 摘要一、文献阅读1. 题目2. abstract3. 网络架构3.1 Sequence Generative Adversarial Nets3.2 SeqGAN via Policy Gradient3.3 The Generative Model for Sequences3.4 The Discriminative Model for Sequences(CNN) 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过…

UWB 雷达动目标检测

1. 静态载波滤除 1. 首先对所有接收脉冲求平均得出参考接收脉冲 [Cir数据为二维数组64*n, 其中n为慢时间域采样的数据帧数] 2. 接着利用每一束接收脉冲减去参考接收脉冲就可以得到目标回波信号,参考接收脉冲的表达式为 2. RD 谱 对雷达回波做静态载波滤…

Linux:IO多路转接之epoll

文章目录 epoll历史epoll的接口epoll_createepoll_waitepoll_ctl epoll原理代码实验 前面的内容介绍了select多路转接,也分析了其利弊,后面用poll改良了select,解决了部分的缺点,但是对于一些核心的缺点还是不能保证,比…

Langchain教程 | langchain+OpenAI+PostgreSQL(PGVector) 实现全链路教程,简单易懂入门

前提: 在阅读本文前,建议要有一定的langchain基础,以及langchain中document loader和text spliter有相关的认知,不然会比较难理解文本内容。 如果是没有任何基础的同学建议看下这个专栏:人工智能 | 大模型 | 实战与教程…

品牌定位升级|飞雕开关如何从家庭作坊走上国际之路?

飞雕电器,这个名字在中国开关插座行业中如同一面旗帜,自1987年起就扬帆在电工领域的大海中。它不仅见证了这个行业的起起伏伏,还始终以其创新的姿态站在浪尖之上。 飞雕的产品线丰富多彩,除主营的墙壁开关插座领域外,飞雕电器还涉足了与墙壁开关紧密相关的其它领域,现已推出移…

vmware 中的Ubuntu系统虚拟机忘记root密码强制重置操作

忘记密码情况下,vmware虚拟机重置Ubuntu的root密码 在企业使用的vmware ESXI中重置Ubuntu系统root密码 1-本地电脑安装个人版的vmware workstation,目的:vmware ESXI自带的远程控制台无法输入指定的键盘按键,需要借助外部的远程辅…

Ceph学习 -3.存储简介

文章目录 1.存储简介1.1 存储类型1.1.1 储备知识1.1.2 三种存储1.1.3 块存储1.1.4 文件存储1.1.5 对象存储1.1.6 三种存储之间的关系1.1.7 总结 1.2 Ceph简介1.2.1 官方介绍1.2.2 软件特点1.2.3 基本结构1.2.4 应用场景 1.3 小结 1.存储简介 学习目标:这一节&#x…

免疫检查点信号转导和癌症免疫治疗(文献)

目录 基础 介绍 免疫检查点的表面调控(细胞膜层面) ​编辑 PD-1调节 PD-L1调节 CTLA-4 调节 检查点信号通路 关于靶点研究 展望 Immune checkpoint signaling and cancer immunotherapy - PubMed (nih.gov) 基础 【中英字幕】肿瘤免疫疗法之免…

docker安装nacos,单例模式(standalone),使用mysql数据库

文章目录 前言安装创建文件夹"假装"安装一下nacos拷贝文件夹删除“假装”安装的nacos容器生成nacos所需的mysql表获取mysql-schema.sql文件创建一个mysql的schema 重新生成新的nacos容器 制作docker-compose.yaml文件查看网站 前言 此处有本人写得简易版本安装&…

【GameFi】 Brilliantcrypto点火活动

活动:https://app.galxe.com/quest/brilliantcrypto/GCt8wthq2J Brilliantcrypto点火活动正在Galxe上进行 🎉 活动时间:2024/04/06 12:00 ~ 2024/05/04 12:00 奖励总价值1200美元的MATIC 完成任务並在Brilliantcrypto Galxe Space上赚取积分。…

《科技创业月刊》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答:问:《科技创业月刊》是什么级别的刊物? 答:省级,主管单位: 湖北省科学技术厅 ;主办单位:湖北省科技信息研究院 问:《科技创业月刊》是c刊吗? 答&…

JUC:手写实现一个简易的线程池(Java)

目录 ​编辑 先上完整代码: 解析: 任务队列: 线程池类: 拒绝策略: 先上完整代码: public class MyThreadPool {public static void main(String[] args) {ThreadPool threadPool new ThreadPool(2, …

基于javassm实现的旅游景点线路网站

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.…

Q1公测手游复盘:大作很多,爆款没有

2024年第一季度过去,整个国内手游市场爆冷连连。 据眸娱不完全统计,一季度累计上新22部颇具影响力的手游(买断制手游仅留鹰角网络《来自星尘》作为代表)。许多备受期待的大作在一季度抢先完成了上线或测试,却在市场端…

IDEA中的Debug功能介绍

说明:本文介绍IDEA中的Debug功能,基于2023.2(Ultimate Edition)版本 简单介绍 首先,在程序需要停止的所在行号上,鼠标左键,可设置一个断点,是一个红色圆点标志,表示程序…

python入门到精通

本文基于《python3从入门到精通》进行编写 python是什么 是一种简单易学的计算机编程语言,有配套的软件工具和库。 是一种开源的语言。因其有许多强大的开源库使得python对与计算、大数据、人工智能都有很强的支持能力。 是一种解释型语言。其代码不需要编译就可…

基于 OpenHarmony ActiveOhos_sqllite 组件开发指南

1. ActiveOhos 功能介绍 1.1.组件介绍 基于鸿蒙系统连接数据库进行 sqlite 数据库操作的时候,创建连接的时候是有些繁琐的,本组件就是为了简化 sqlite 的连接,并且对鸿蒙原生的 API 进行封装加强,使得读写 sqlite 数据库的时候更…

Java8新特性 (jdk1.8)

目录 一、Lamdba表达式? 二、函数式接口 三、方法引用和构造引用 四、Stream API流 五、接口中的新增 默认方法和静态方法 六、新时间日期API 七、Optional 八、其他特性 一、Lamdba表达式? 为什么使用Lambda表达式? Lambda 是一个 匿…