Shell 脚本应用(四)

正则表达式概述

        正则表达式又称正规表达式,常规表达式。在代码中常简写为regex,regexp 或RE.正则表达式 是使用单个字符串来描述,匹配一系列符合某个句法规则的字符串,简单来说,是一种匹配字符串 的方法,通过一些特殊符号,实现快速查找,删除、替换某个特定字符串。 正则表达式是由普通字符与元字符组成的文字模式。模式用于描述在搜索文本时要匹配的一 个或多个字符串,正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。其中 普通字符包括大小写字母,数字,标点符号及一些其他符号,元字符则是指那些在正则表达式中 具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中 的出现模式.

 

基础正则表达式

        正则表达式的字符串表达方法根据不同的严谨程度与功能分为基本正则表达式与扩展正则表达 式,基础正则表达式是常用的正则表达式的最基础的部分,在Linux系统中常见的文件处理工具中 grep 与sed支持基础正则表达式,而egrep与awk支持扩展正则表达式。掌握基础正则表达式的使用 方法,首先必须了解基本正则表达式所包含的元字符的含义,下面通过grep命令以举例的方式逐个介绍。

1.基础正则表达式示例

下面的操作需要提前准备一个名为test.txt的测试文件,文件具体内容如下所示.

76aa11725e444f9a8424195552af0b19.png

 (1)查找特定字符

        查找特定字符非常简单,如执行以下命令即可从test.txt文件中查找出特定字符“the"所在位置. 其中“-n”表示显示行号,“-i”表示不区分大小写,命令执行后,符合匹配标准的字符,字体颜色 会变为红色(本章中全部通过加粗显示代替)

[root@lgcllc ~]# grep -n 'the' test.txt 

[root@lgcllc ~]# grep -in 'the' test.txt 

65abd08048d24753bd6bb806f1d94706.png

 

若反向选择,如查找不包含“the”字符的行,则需要通过grep命令的‘-vn”选项实现.

[root@lgcllc ~]# grep -vn 'the' test.txt 

575f784d7329497bb8e6adeef0bf8e0d.png 

(2)利用中括号“[ ]”来查找集合字符

                想要查找“shirt”与“short”这两个字符串时,可以发现这两个字符串均包含“sh与rt".此 时执行以下命令即可同时查找到“shirt与“short”这两个字符串.“I”中无论有几个字符,都仅代表一个字符,也就是说“[io]”表示匹配"i”或者“o”.

[root@lgcllc ~]# grep -n 'sh[io]rt' test.txt 

7aa301530cd74404b8c99da8f3b627dd.png

 若要查找包含重复单个字符‘oo”时,只需要执行以下命令即可。

[root@lgcllc ~]# grep -n 'oo' test.txt 

5d2c1fa7d0344f6a9c81a4595bb415bd.png

 若查找‘oo”前面不是‘w”的字符串,只需要通过集合字符的反向选择“[]”来实现该目的, 如执行“grep -n“[^w]oo'test.txt”命令表示在test.txt文本中查找“oo”前面不是“w”的字符串。

[root@lgcllc ~]# grep -n '[^w]oo' test.txt

7ce7b30e5e0d40d0b8bf837630332ae3.png

 (3)查找行首“^” 与行尾字符“$” 

查询the字符串时出现了很多包含“the”的行,如果想要查询以“the”字符串为行首的行,则可以通过 ' ^'元字符来实现。

[root@lgcllc ~]# grep -n '^the' test.txt 

d224886f4391484a8f8e8924648f4a8b.png

 

查询以小写字母开头的行可以通过“[a-z]”规则来过滤,查询大写字母开头的行则使用“[A-Z]” 规则,若查询不以字母开头的行则使用“[^a-zA-Z]”规则。

[root@lgcllc ~]# grep -n '^the' test.txt

[root@lgcllc ~]# grep -n '^[A-Z]' test.txt 
[root@lgcllc ~]# grep -n '^[^a-zA-Z]' test.txt 

3a29b3454e9444aba559fc4b46303df6.png 

当查询空白行时.执行“grep-n““s'test.txt”命令即可。

 [root@lgcllc ~]# grep -n '^$' test.txt 

 (4)查找任意一个字符”.”与重复字符”*”

        在正则表达式中小数点(.)也是一个元字符,代表任意一个字符。例如,执行以下 命令就可以查找“w??d”的字符串,即共有四个字符,以w开头d结尾.

[root@lgcllc ~]# grep -n 'w..d' test.txt

64a233232d69466db96d97a4746fb8fd.png 

若查询包含至少两个o以上的字符串,可执行以下语句

[root@lgcllc ~]# grep -n 'ooo*' test.txt 

425b4be8a43943c9b5357219806eed30.png 

(5)查找连续字符范围“{ }”

        在上面的示例中,我们使用“.”与“*”来设定零个到无限多个重复的字符,如果想要限制一 个范围内的重复的字符串该如何实现呢?例如,查找三到五个o的连续字符,这个时候就需要使用基础正则表达式中的限定范围的字符“{ }”.因为“{ }”在Shell中具有特殊意义,所以在使用“{}” 字符时,需要利用转义字符“\”,将“{ }”字符转换成普通字符。“{}”字符的使用方法如下所示。 

        查询两个o的字符。

[root@lgcllc ~]# grep -n 'o\{2\}' test.txt 

6f2bb5db85204a4abc9d4153cf0f3f73.png 

         查询以w开头以d结尾,中间包含2~5个o的字符串。 

[root@lgcllc ~]# grep -n 'wo\{2,5\}d' test.txt 

256acc4cfa0d4bbe8abc4727a805da13.png 

        查询以w开头以d结尾,中间包含2以上o的字符串。 

[root@lgcllc ~]# grep -n 'wo\{2,\}d' test.txt 

b61a0506599d4b40b9d0e8b9773fc42b.png 

2.元字符总结 

05d6adbc767e4d12bf3cd5c1ea83c371.png

 

文本处理器 

        在Linux/UNX系统中包含很多种文本处理器或文本编辑器,其中包括我们之前学习过的VM编辑器 与grep等。而 grep,sed,awk 更是shell编程中经常用到的文本处理工具,被称之为Shell编程三剑客。

sed工具

        通常情况下调用sed命令有两种格式,如下所示,其中,“参数”是指操作的目标文件,当存在 多个操作对象时用,文件之间用逗号””分隔:而scriptfile表示脚本文件,需要用“-f”选项指定. 当脚本文件出现在目标文件之前时,表示通过指定的脚本文件来处理输入的目标文件。      

a96a8729ec424e4580985c4b9599b833.png  7a497d585325459c81a30d57275742b0.png

d987ebbf1d374a868e581b6eb00cc927.png

awk工具 

        通常情况下awk所使用的命令格式如下所示,其中,单引号加上大括号“{ }”用于设置对数据 进行的处理动作。awk可以直接处理目标文件,也可以通过“-f ”读取脚本对目标文件进行处理。

fb22e9be1a954ae8b8e962229dfaa51a.png

        默认情况下字段的分隔符为空格或者tab键。awk执行结果可以通过 print的功能将字段数 据打印显示。在使用awk命令的过程中,可以使用逻辑操作符“&&”,表示“与”,“II”表示“或”, “!”表示“非”:还可以进行简单的数学运算,如+,一、*./.%、“分别表示加、减、乘、除、取余和乘方。

72da6a30cfb8478b92cadc1aa1467ee5.png 

 

 

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

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

相关文章

文件夹共享功能的配置 以及Windows server2012防火墙的配置

目录 一. 配置文件夹共享功能 1.1 为什么需要配置文件夹共享功能 1.2 配置文件夹共享 1.3 访问共享文件夹 1.4 配置取消 用户名和密码认证 二. windows server 2012防火墙配置 思维导图 一. 配置文件夹共享功能 1.1 为什么需要配置文件夹共享功能 我们在工作和生活中经…

信号与线性系统翻转课堂笔记12——时域取样定理

信号与线性系统翻转课堂笔记12 The Flipped Classroom12 of Signals and Linear Systems 对应教材:《信号与线性系统分析(第五版)》高等教育出版社,吴大正著 一、要点 (1)了解信号取样的概念&#xff1…

智能优化算法应用:基于浣熊算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于浣熊算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于浣熊算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.浣熊算法4.实验参数设定5.算法结果6.参考文献7.MA…

【python与机器学习3】感知机和门电路:与门,或门,非门等

目录 1 电子和程序里的与门,非门,或门,与非门 ,或非门,异或门 1.1 基础电路 1.2 所有的电路情况 1.3 电路的符号 1.4 各种电路对应的实际电路图 2 各种具体的电路 2.1 与门(and gate) 2…

什么是数据分析思维

参考 一文学会如何做电商数据分析(附运营分析指标框架) 电子商务该如何做数据分析?如何数据分析入门(从各项指标表象进入) https://www.processon.com/outline/6589838c3129f1550cc69950 数据分析步骤 什么是数据分析…

2024年元旦节放假通知

致尊敬的客户以及全体同仁: 旧岁已展千重锦,新年再进百尺竿。在这辞旧迎新之际,易天光通信提前祝您元旦快乐!生意兴隆,身体健康,万事如意!根据国家法定假期的规定,并结合公司实际情…

Elasticsearch8.x结合OpenAI CLIP模型实现图搜图及文搜图功能

前言 在当今大数据时代,搜索引擎已经是许多应用的核心组件之一,近年随着大模型以及AI技术(如:自然语言处理NLP)的流行,这些技术的结合将会创造出更多的应用场景,比如:电商商品搜索、…

centos 安装oracle 11.2.04 并配置数据库自启动操作记录,一次完成

环境: centos版本7.3,安装的有图形化界面 Oracle11.2.04,之所以选择这个版本是因为网上有人说11其他版本的在安装的过程中会出现这样或那样的问题,下载地址放到文章下面 步骤,按顺序: 1、创建安装Oracle…

nginx反向代理服务器及负载均衡服务配置

一、正向代理与反向代理 正向代理:是一个位于客户端和原始服务器(oricin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户…

Tauri:构建高效安全的桌面应用程序 | 开源日报 No.124

tauri-apps/tauri Stars: 64.6k License: Apache-2.0 Tauri 是一个开源项目,它可以通过 Web 前端构建更小、更快和更安全的桌面应用程序。 该项目具有以下优势和特点: Tauri 可以帮助用户构建桌面应用程序,并使用 web 前端技术进行界面设计…

Bug:Too many open files【ulimit限制】

Bug:Too many open files 今天在开发某个下载功能时,发现文件总是下载到250多个程序就挂掉,同时会打崩服务器,查看错误日志发现报:too many open files. 思路:根据错误信息可以知道打开的文件数过多&#x…

k8s的二进制部署

k8s的二进制部署:源码包部署 k8smaster01: 20.0.0.101 kube-apiserver kube-controller-manager kube-scheduler etcd k8smaster02: 20.0.0.102 kube-apiserver kube-controller-manager kube-scheduler node节点01: 20.0.0.103 kubelet kube-proxy etcd node节点02…

2024 年 11 款最佳 Android 数据恢复软件应用

Android 设备上的数据丢失可能是一种令人痛苦的经历,通常会导致不可替代的信息瞬间消失。 意外删除、系统崩溃或格式错误都可能发生,重要数据的丢失可能会扰乱日常工作并影响您的工作效率。 幸运的是,技术进步带来了多种恢复解决方案&…

微信小程序预览pdf,修改pdf文件名

记录微信小程序预览pdf文件,修改pdf名字安卓和ios都可用。 1.安卓和苹果的效果 2.需要用到的api 1.wx.downloadFile wx.downloadFile 下载文件资源到本地。客户端直接发起一个 HTTPS GET 请求,返回文件的本地临时路径 (本地路径),单次下载…

数据结构:图文详解 树与二叉树(树与二叉树的概念和性质,存储,遍历)

目录 一.树的概念 二.树中重要的概念 三.二叉树的概念 满二叉树 完全二叉树 四.二叉树的性质 五.二叉树的存储 六.二叉树的遍历 前序遍历 中序遍历 后序遍历 一.树的概念 树是一种非线性数据结构,它由节点和边组成。树的每个节点可以有零个或多个子节点…

深圳鼎信|输电线路防山火视频监控预警装置:森林火灾来袭,安全不留白!

受线路走廊制约和环保要求影响,输电线路大多建立在高山上,不仅可以减少地面障碍物和人类活动的干扰,还能提高线路的抗灾能力和可靠性。但同时也会面临其它的难题,例如森林火灾预防。今天,深圳鼎信智慧将从不同角度分析…

基于AR+地图导航的景区智慧导览设计

随着科技的飞速发展,智慧旅游已经成为现代旅游业的一个重要趋势。在这个背景下,景区智慧导览作为智慧旅游的核心组成部分,正逐渐受到越来越多游客的青睐。本文将深入探讨地图导航软件在景区智慧导览中的应用,并分析其为游客和景区…

Vue-Pinina基本教程

前言 官网地址:Pinia | The intuitive store for Vue.js (vuejs.org) 看以下内容,需要有vuex的基础,下面很多概念会直接省略,比如state、actions、getters用处含义等 1、什么是Pinina Pinia 是 Vue 的存储库,它允许您跨…

Graylog日志搜索技巧

graylog搜索日志用的语法是Syntax接近Lucene,搜起来比较方便 Search query languagehttps://go2docs.graylog.org/4-0/making_sense_of_your_log_data/writing_search_queries.html?tocpathSearching%20Your%20Log%20Data|_____1 1.Syntax 语法 1.1 基本匹配 搜…

Hive04_DDL操作

Hive DDL操作 1 DDL 数据定义 1.1 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_nameproperty_value, ...)];[IF NOT EXISTS] :判断是否存在 [COMMENT database_c…