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

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

实验目的

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

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

相关文章

春招-实战项目冲刺直播课

春招-实战项目冲刺直播课 CCtalk 丰富多元的综合内容平台-专业的知识分享与在线教育平台https://www.cctalk.com/m/group/91161801

蓝桥杯刷题-13-子矩阵-二维滑动窗口 ಥ_ಥ

给定一个 n m (n 行 m 列)的矩阵。 设一个矩阵的价值为其所有数中的最大值和最小值的乘积。求给定矩阵的所有大小为 a b (a 行 b 列)的子矩阵的价值的和。 答案可能很大,你只需要输出答案对 998244353 取模后的结果。…

Redis 常见面试题

目录 1. Redis是什么?2. Redis优缺点?3. Redis为什么这么快?4. 既然Redis那么快,为什么不用它做主数据库,只用它做缓存?5. Redis的线程模型?6. Redis 采用单线程为什么还这么快?7. R…

Linux——静态库 共享库

1.库文件 1).库文件 库是一组预先编译好的方法的集合; Linux系统存储库的位置一般在/lib 和 /usr/lib (64位系统/usr/lib64) 库的头文件放在/usr/include 2).库的分类 静态库:libxxx.a(命名规则) 共享库:libxxx.so(命名规则) 3).准备文件: //add.c int add(int x,int y) { re…

localStorage封装代码

localStorage封装 JSON.stringfy()和JSON.parse() JSON.stringfy(): 将 JS 对象转化为 JSON 字符串。 const obj { name: John, age: 30 }; const jsonString JSON.stringify(obj); console.log(jsonString); // {"name":"John","age":30}J…

consul: 集群搭建和数据中心通信

基于 docker-compose.yml 搭建 1 )docker-compose.yml 的配置 version: 3 services:server1:image: consul:latestcommand: "agent -server -config-file/consul/config/consul.json -nodeconsul-server1 -bootstrap-expect5"volumes:- ./data/server1:/…

vue结合Elempent-Plus/UI穿梭框更改宽度以及悬浮文本显示

由于分辨率不同会导致文本内容显示不全,如下所示: 因此需要 1、悬浮到对应行上出现悬浮信息 实现代码如下所示: 这里只演示Vue3版本代码,Vue2版本不再演示 区别就在插槽使用上Vue3使用:#default“”;Vu…

vitepress系列-04-规整sideBar左侧菜单导航

规整左侧菜单导航 新建navConfig.ts 文件用来管理左侧导航菜单: 将于其他的配置分开,避免config.mts太大 在config目录下,新建 sidebarModules文件目录用来左侧导航菜单 按模块进行分类: 在config下新建sidebarConfig.ts文件&…

【随笔】Git 高级篇 -- 整理提交记录(上)cherry-pick(十五)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

Android 如何通过屏幕大小来适配不同大小的图片

可以使用Android中的dp(密度无关像素)单位来设置不同屏幕密度下的图片大小。dp是Android中的一种尺寸单位,它与屏幕密度无关,只与字体大小有关。在开发过程中,可以使用dp来设置布局和控件的大小,以便在不同的屏幕密度下保持一致的…

阻塞/非阻塞IO、同步/异步IO的区别

阻塞/非阻塞IO、同步/异步IO的区别 阻塞/非阻塞IO和同步/异步IO是描述IO操作(输入/输出操作)的两种不同方式,它们在处理IO操作时具有不同的特性和应用场景。 阻塞/非阻塞IO 阻塞IO和非阻塞IO主要关注的是程序在等待IO操作完成时的行为。 阻…

Python爬虫入门指南

随着大数据时代的到来,网络爬虫技术变得越来越重要。Python作为一种功能强大的编程语言,非常适合用来编写爬虫程序。本文将带领大家入门Python爬虫,从基础知识讲起,逐步深入实践。 一、爬虫基础知识 网络爬虫,又称为…

书生·浦语大模型 第二节:Demo实践

书生浦语大模型 第二节:Demo实践 视频链接:Demo实践视频 文档链接:教程文档 一、实践内容: 部署InternLM2-Chat-1.8B模型进行智能对话部署实战营优秀作品 八戒-Chat-1.8B 模型通过 InternLM2-Chat-7B 运行 Lagent 智能体 Demo…

C++分析程序各模块耗时-perf火焰图

C分析程序各模块耗时-perf火焰图 1. 简介2. 安装3. 测试示例4. 从火焰图可以获得的信息5. 生成火焰图常见问题 Reference: Perf Wiki【性能】perf 火焰图分析软件性能瓶颈【火焰图🔥】Linux C/C性能优化分析工具Perf使用教程 perf: Linux profiling with perform…

POLY - Survival Melee Weapons

一个轻便、有趣且灵活的低多边形资源包,非常适合原型设计或添加到低多边形世界中。超过50种近战武器、刀、斧、棍棒、棍棒等。 此套餐非常适合第三人称或自上而下的观看。 除此之外,资产还包括开发生存游戏可能需要的任何细节。 整个包是以多边形风格创建的,可以与其他多边…

分类预测 | Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机数据分类预测

分类预测 | Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机数据分类预测 目录 分类预测 | Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机数据…

消费增值:革新你的消费观念,让每一分钱都充满无限可能

你是否曾感叹,每次消费都如同流水般逝去,钱就这样无声无息地消失?今天,我要为你揭示一种革新性的消费观念——消费增值。这不仅仅满足你的日常需求,更能让你的每一分钱都如同种子般,在未来开出绚烂的花朵&a…

从细节讲解单轴测径仪系列!

摘要:单轴测径仪是从一个方向对产品外径进行在线检测的设备,应用于各种线缆电缆、橡胶塑料、金属管、纸管、丝等的生产线。 关键词:单轴测径仪,测径仪,在线测径仪 引言 在各种产品的生产线上,外径的测量通过使用测径仪已实现了高精…

聚焦行业技术云隆机械将莅临2024第13届生物发酵展

参展企业介绍 上海云隆机械有限公司本公司主要经营制造:板式杀菌系列、管式杀菌系列、CIP清洗系统、胶体磨系列、分散乳化机系列、容积式转子泵和高压均质机序列设备。承接设计:乳制品、果汁饮料、蜂产品、冰淇淋、调味品、矿泉水、纯净水等食品工程项目…

07 | Swoole 源码分析之 Channel 通道模块

原文首发链接:Swoole 源码分析之 Channel 通道模块 大家好,我是码农先森。 引言 通道,用于协程间通讯,支持多生产者协程和多消费者协程。底层自动实现了协程的切换和调度。 通道与 PHP 的 Array 类似,仅占用内存&am…