【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 地址(至少两种方法完成)。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HAL STM32 定时器PWM DMA输出方式

HAL STM32 定时器PWM DMA输出方式 🧨遗留问题:当配置RCR重复计数器,配置为2时,在定义了3组PWM参数情况下,只能输出第二组参数的PWM波形。(HAL_TIM_PWM_Start_DMA(&htim1, TIM_CHANNEL_1, aCCValue_Buff…

Java中网络编程,Junit单元测试详解

文章目录 软件结构C/S结构B/S结构 概述三要素IP (银行的位置)端口 (银行中某个柜台号)协议 (填写取款单的规则)TCP通信程序TCP通信原理客户端发送数据服务端接收数据过程图三次握手 Junit单元测试概述常见的注解使用断言概述使用 软件结构 C/S结构 客户…

怀俄明探空站数据解算PWV和Tm

1. Matlab 获取代码可关注公众号WZZHHH回复(怀俄明探空站数据解算PWV和Tm),或者咸鱼关注:WZZHHH123 怀俄明探空站数据解算PWV和Tm: 有关 Matlab 获取代码可关注公众号WZZHHH回复(怀俄明多线程下载&#…

mysql_secure_installation初始化数据库报Access denied

使用mysql_secure_installation配置时出错: 可能输入密码错误,重新复制,粘贴密码。 或者: 登录mysql,设置密码,然后再设置权限。 mysql -u root -p [输入密码] sql>set passwordpassword("newPa…

数据同步工具datax安装配置与示例

文章目录 一、部署步骤1、jdk环境2、python环境步骤一:安装方式一:官网下载安装包方式二:brew命令安装 步骤二:配置环境变量步骤三:验证 3、maven环境(可选) 二、下载安装datax1、下载datax源码…

100 个网络基础知识,看完成半个网络高手

100 个网络基础知识,看完成半个网络高手。 1)什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2)OSI 参考模型的层次是什么? 有 7 个 OSI 层:物理层,数据链路层,网络层&…

入门微调预训练Transformer模型

大家好,HuggingFace 为众多开源的自然语言处理(NLP)模型提供了强大的支持平台,让这些模型能够通过训练和微调来更好地服务于各种特定的应用场景。在大型语言模型(LLM)迅猛发展的今天,HuggingFac…

配置vscode用于STM32编译,Debug

配置环境参考: Docs 用cubemx配置工程文件,用VScode打开工程文件。 编译的时候会有如下报错: vscode出现process_begin :CreateProcess failed 系统找不到指定文件 解决方案:在你的makefile中加上SHELLcmd.exe就可以了 参考…

数据库系统

三级模式 外模式 数据库的用户使用的局部数据的逻辑结构和特征的描述数据库用户的数据视图,是与某一应用程序有关的数据的逻辑表示。 概念模式 它是数据库中全体数据的逻辑结构和特征的描述;模式是所有用户的公共数据视图。因为数据库是多人共享使用的&…

CICD流水线 发布公用jar到maven私仓

3.1 发布公用jar到Maven私仓 1.选择流水线 2.新建流水线 3.选择模版 4.选择代码仓库 5. 调整构建命令 6.新增一个新阶段为 ”发送通知“,这里以邮件通知为例,保存之后,运行该流水线,对应jar就会自动发到我们私仓,并之…

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

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

CTF之社工-初步收集

题目就一个刷钻网站(假的) 扫描一下目录 发现还有一个登录界面 时间多的可以爆破一下(反正我爆不出来),接着我们下载那个压缩包看看 发现是一个钓鱼小软件 没发现什么有用的信息那我们就去wireshark看看数据包喽&#…

winform 等待加载窗体

winform 等待加载窗体 当我们查询sql语句或处理大量的数据时,为了防止界面假死状态,可以加一个等待窗体过渡一下。 1. 新建一个主窗体,一个等待窗体frmLoading 2. 给等待窗体增加一个动态图片 3. 在主窗体中调用 namespace winformLoading…

解析以及探讨数据库技术及其应用

一,引言 数据库作为信息时代的基石,是一种用于高效存储、管理和检索大量结构化数据的系统。它的核心价值在于提供了一种可靠且可扩展的方式,将复杂多样的数据按照特定结构和规则组织起来,以便于不同用户和应用程序进行访问和使用。…

揭秘!接口自动化测试应该做什么?

在软件开发过程中,接口测试是一个至关重要的环节,它确保了系统或组件之间的数据交换、传递和控制管理过程以及相互逻辑依赖关系的正确性。传统的瀑布软件流程中,测试人员在做某个系统的手工功能测试时,会首先从业务人员或开发人员…

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

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

Visual Studio 配置代码风格审查工具cpplint

文章目录 一、Visual Studio 配置代码风格审查工具cpplint1、安装2、运行3、集成到Visual Studio4、集成到Git 前言 cpplint是一个用于检查C代码风格的工具,它可以帮助我们发现潜在的编码问题,提高代码质量。cpplint遵循Google的C编码规范,通…

【c++练习】求3个长方柱的体积

【问题描述】编写一个基于对象数组的程序,用成员函数实现多个功能,求3个长方柱的体积。要求用成员函数实现以下功能: 1、由键盘分别输入3个长方柱的长、宽、高; 2、计算长方柱的体积; 3、输出3个长方柱的体积。 【…

【白菜基础】蛋白组学之生信分析(1)

刚换了一个新课题组,新老板的研究方向为蛋白组学,从未接触过蛋白组学的我准备找一组模拟数据进行生信分析的入门学习。 蛋白组学数据挖掘流程图,参考公众号:蛋白质组学数据挖掘思路解析 (qq.com) 一、认识数据 我们组的数据主要…

csdn博客自定义模块:显示实时天气、日历、随机语录代码

目录 1.样式说明2.效果展示3.代码下载 1.样式说明 vip会员或者博客专家可以自定义模块代码,比如我博客的样式,有这几部分组成: 灯笼祝福(我这里是龙年快乐,可以自定义更改任何字)、滚动欢迎语&#xff08…