shell脚本之正则表达式

目录

  • 一.常见的管道命令
    • 1.1sort命令
    • 1.2uniq命令
    • 1.3tr命令
    • 1.4cut命令
    • 1.5实例
      • 1.5.1统计当前主机连接状态
      • 1.5.2统计当前主机数
  • 二.正则表达式
    • 2.1正则表达式的定义
    • 2.2常见元字符(支持的工具:find,grep,egrep,sed和awk)
    • 2.3扩展正则表达式
    • 2.4位置锚定

一.常见的管道命令

1.1sort命令

  • sort命令可针对文本文件的内容,以行为单位来排序

    格式:sort  【选项】 参数
    
  • 常用选项

选项说明
-f忽略大小写
-b忽略每行前面的空格
-n按照数字进行排序
-r反向排序
-u等同于uniq,表示相同的数据仅显示一行
-t指定字段分隔符,默认使用【Tab】键分隔
-k指定排序字段
-o<输出文件>将排序后的结果转存至指定文件

1.2uniq命令

  • uniq命令用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用

    格式:uniq【选项】 参数
    
  • 常用选项

选项说明
-c进行计数,并删除文件中重复出现的行
-d仅显示连续的重复行
-u仅显示出现一次的行

1.3tr命令

  • 常用来对来自标准输入的字符进行替换,压缩和删除

    格式;tr 【选项】 【参数】
    
  • 常用选项

选项说明
-c保留字符集1的字符,其他的字符用字符集2替换
-d删除所有属于字符集1的字符
-s将重复出现的字符串压缩为一个字符串;用字符集2替换字符集1
-t字符集2替换字符集1,不加选项同结果
  • 常用参数
参数说明
字符集1指定要转换或删除的原字符集,当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2‘
字符集2指定要转换成的目标字符集

1.4cut命令

  • 显示行中指定的部分,删除文件中指定字段

     格式;cut 【选项】 参数
    

-常用选项

选项说明
-f通过指定哪一个字段进行提取。cut命令使用“TAB” 作为默认的字段分割符
-d“TAB”是默认的分割符,使用此选项可更改为其他的分隔符
–complement用于排除所指定的字段
–output-delimiter更改输出内容的分隔符

1.5实例

1.5.1统计当前主机连接状态

在这里插入图片描述

1.5.2统计当前主机数

在这里插入图片描述

二.正则表达式

2.1正则表达式的定义

  • 正则表达式,又称正规表达式,常规表达式
  • 使用字符串来描述,匹配一系列符合某个规则的字符
  • 正则表达式组成
    • 普通字符,包括大小写字母,数字,标点符号及一些其他符号
    • 元字符是指在正则表达式中具有特殊意义的专用字符

2.2常见元字符(支持的工具:find,grep,egrep,sed和awk)

匹配符表示含义
.表示任意一个字符
【】匹配括号中的一个字符
【^】表示否定括号中出现字符类中的字符,取反
\转义字符用于取消特殊符号的含义
^匹配字符串开始的位置
$匹配字符串结束的位置
{n}匹配前面的字表达式n次
{n,}匹配前面的子表达式不少于n次
{n,m}匹配前面的子表达式n到m次
【:alnum:】匹配任意字母和数字
【:alphabet:】匹配任意字母,大写或小写
【:lower:】小写字符a-z
【:upper:】大写字符A-Z
【:blank:】空格和TAB字符
【:space:】所有空白字符(新行,空格,制表符)
【:digital:】数字0-9
【:xdigt:】16进制数字
【:cntrl:】控制字符

实例1:.表示任意一个字符

在这里插入图片描述

示例2:【】匹配括号中的一个字符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
示例3;【^】:表示否定括号中出现字符类中的字符,取反
在这里插入图片描述
在这里插入图片描述
示例4:【:alnum:】匹配任意字母和数字

在这里插入图片描述
示例5:元字符;(.)
在这里插入图片描述
在这里插入图片描述

2.3扩展正则表达式

  • 支持的工具;egrep,awk或grep -E和sed -r
限定符说明
*匹配前面子表达式0次或者多次
.*任意长度的任意符
匹配前面子表达式0次或者1次,即:可有可无
+与星号相似,表示其前面字符出现一次或多次,但必须出现一次,>=1
{n,m}匹配前面的子表达式n到m次
{m}匹配前面的子表达式n次
{n,}匹配前面的子表达式不少于n次>=n
{,n}匹配前面的子表达式最多n次,<=n
l用逻辑OR方式指定正则表达式要用的模式
()字符串分组,将括号中的字符串作为一个整体

实例1:*匹配前面子表达式0次或者多次
在这里插入图片描述
示例2;{n,m}匹配前面的子表达式n到m次
在这里插入图片描述
实例3:{n,}匹配前面的子表达式不少于n次>=n
在这里插入图片描述
实例4;{,n}匹配前面的子表达式最多n次,<=n
在这里插入图片描述
实例5:*匹配前面子表达式0次或者多次
在这里插入图片描述
实例6:*任意长度的任意字符
在这里插入图片描述
实例7:?匹配前面子表达式0次或者1次,即:可有可无
在这里插入图片描述
实例8:+与星号相似,表示其前面字符出现字符一次或多次,但必须出现一次,>=1
在这里插入图片描述
实例9:|逻辑OR方式指定正则表达式要用的模式
在这里插入图片描述
实例10:()字符串分组,将括号中的字符串作为一个整体
在这里插入图片描述
实例11:提取ip地址
在这里插入图片描述
在这里插入图片描述

2.4位置锚定

位置限定符说明
^行首锚定,用于模式的最左侧
$行尾锚定,用于模式最右侧
^ OATTERN^用于模式匹配整行
^$空行
^ [[:space;]]*$空白行
<或\b词首锚定,用于单词模式的左侧
>或\b词尾锚定,用于单词的右侧
<PATTERN>匹配整个单词

实例1;行尾锚定,用于模式的最右侧

在这里插入图片描述
实例2;行尾锚定,用于模式的最左侧
在这里插入图片描述
实例3:用于模式匹配整行,匹配的内容单独在一行
在这里插入图片描述
实例4;<:只匹配右侧单词
在这里插入图片描述
实例5:>;只匹配左侧的单词
在这里插入图片描述
实例6:过滤出不是以#开头的非空行

在这里插入图片描述

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

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

相关文章

RabbitMQ 安装教程

RabbitMQ 安装教程 特殊说明 因为RabbitMQ基于Erlang开发&#xff0c;所以安装时需要先安装Erlang RabbitMQ和Erlang版本对应关系 查看地址&#xff1a;www.rabbitmq.com/which-erlan… 环境选择 Erlang: 23.3及以上 RabbitMQ: 3.10.1Windows 安装 1. 安装Erlang 下载地…

taro Swiper组件--异形滚动

效果 <SwiperindicatorDots{false}previousMargin50pxnextMargin50pxautoplay{false}interval100onChange{onChangeSwiper} >{[1,2,3].map((item, index) > {return (<SwiperItemkey{item-${index}}><View className{demo-item ${currentIndex index ? ac…

国产航顺HK32F030M: 内部参考电压

HK32F030MF4P6 用户手册 内部参考电压 adc.c #include "bsp_adc.h"/*** brief ADC GPIO 初始化* param 无* retval 无*/ static void ADCx_GPIO_Config(void) {GPIO_InitTypeDef GPIO_InitStructure;// 打开 ADC IO端口时钟ADC_GPIO_AHBxClock_FUN ( ADC_GPIO_C…

《Zookeeper》源码分析(七)之 NIOServerCnxn的工作原理

目录 NIOServerCnxnreadPayload()handleWrite(k)process() NIOServerCnxn 在上一节IOWorkRequest的doWork()方法中提到会将IO就绪的key通过handleIO()方法提交给NIOServerCnxn处理&#xff0c;一个NIOServerCnxn代表客户端与服务端的一个连接&#xff0c;它用于处理两者之间的…

Postman如何做接口测试

目录 Postman如何做接口测试1&#xff1a;如何导入 swagger 接口文档 Postman如何做接口测试2&#xff1a;如何切换测试环境 Postman如何做接口测试3&#xff1a;什么&#xff1f;postman 还可以做压力测试&#xff1f; Postman如何做接口测试4&#xff1a;如何自动添加请求…

HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具

公文一键排版系统基本完成&#xff0c;准备继续完善SysInfo&#xff0c;增加用户帐户信息&#xff0c;其中涉及到Win32_Account结构&#xff0c;其C定义如下&#xff1a; [Dynamic, Provider("CIMWin32"), UUID("{8502C4CC-5FBB-11D2-AAC1-006008C78BC7}"…

Docker安装ElasticSearch/ES

目录 前言安装ElasticSearch/ES步骤1&#xff1a;准备1. 安装docker2. 搜索可以使用的镜像。3. 也可从docker hub上搜索镜像。4. 选择合适的redis镜像。 步骤2&#xff1a;拉取ElasticSearch镜像1 拉取镜像2 查看已拉取的镜像 步骤3&#xff1a;创建容器创建容器方式1&#xff…

餐馆包厢隔断装修该怎么去设计

餐馆包厢隔断装修设计需要综合考虑以下几个方面&#xff1a; 1. 功能布局&#xff1a;根据包厢的面积和形状来确定餐桌、椅子、电视等家具的摆放方式&#xff0c;保证客人的用餐舒适度和便利性。 2. 音响设备&#xff1a;安装合适的音响设备&#xff0c;提供一定的音乐背景&…

事务和事务的隔离级别

1.4.事务和事务的隔离级别 1.4.1.为什么需要事务 事务是数据库管理系统&#xff08;DBMS&#xff09;执行过程中的一个逻辑单位&#xff08;不可再进行分割&#xff09;&#xff0c;由一个有限的数据库操作序列构成&#xff08;多个DML语句&#xff0c;select语句不包含事务&…

Nginx环境搭建、docker安装

目录 1.Nginx安装 1&#xff09;首先创建Nginx的目录并进入 2&#xff09;下载Nginx的安装包&#xff0c;可以通过FTP工具上传离线环境包&#xff0c;也可通过wget命令在线获取安装包 3&#xff09;解压Nginx的压缩包 4&#xff09;下载并安装Nginx所需的依赖库和包 5&…

2023下半年软考改成机考,对考生有哪些影响?

软考改革成无纸化考试已经实锤。根据陕西软考办官网的消息&#xff0c;从2023年11月起&#xff0c;软考的所有科目都将改为机器考试形式。详情请参阅&#xff1a; 那么软考考试改为机考后&#xff0c;对我们会有哪些影响呢&#xff1f;我来简单概括一下。 1、复习的方法可以根…

ModaHub魔搭社区——Milvus 、Qdrant、Waeviate、Pinecone、ElasticSearch矢量数据库对比

资本市场上,2022年也是风起云涌的一年的,各大向量数据库公司纷纷完成了千万美元级别新一轮的融资。可以预见,2023年将会是向量数据库继续快速发展的一年,也会是这一新兴技术由发展走向成熟的一年。这里针对Milvus 、Qdrant、Waeviate、Pinecone、ElasticSearch这五个流行的…

git教程(第一次使用)

一、gitee和github区别 二、git使用 下载地址 windows&#xff1a;https://gitforwindows.org/ mac&#xff1a;http://sourceforge.net/projects/git-osx-installer/ 1.git初次运行前的配置 &#xff08;1&#xff09;配置用户信息 git config --global user.name "…

python爬虫——爬虫伪装和反“反爬”

前言 爬虫伪装和反“反爬”是在爬虫领域中非常重要的话题。伪装可以让你的爬虫看起来更像普通的浏览器或者应用程序&#xff0c;从而减少被服务器封禁的风险&#xff1b;反“反爬”则是应对服务器加强的反爬虫机制。下面将详细介绍一些常见的伪装和反反爬技巧&#xff0c;并提…

SaaS系统相比传统软件,为何数据更安全?

随着云计算、5G等技术的不断进步&#xff0c;SaaS行业步入了快速发展的阶段&#xff0c;应用场景也日趋多元化。预计2023年底&#xff0c;中国SaaS行业市场规模将达到555.1亿元。 中研网对于SaaS发展态势预测这样评价&#xff1a; 当前&#xff0c;我国在多个维度上具备发展 S…

【力扣每日一题】2023.8.11 矩阵对角线元素的和

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一个矩阵&#xff0c;让我们把矩阵对角线上的元素都加起来返回。 那么矩阵的对角线是有两条的&#xff0c;一条是从左上到右下…

html 计算器界面

其他链接&#xff1a; https://www.freecodecamp.org/news/how-to-build-an-html-calculator-app-from-scratch-using-javascript-4454b8714b98/ https://codepen.io/pen/tour/welcome/start 下面展示一些 内联代码片。 <!DOCTYPE html> <html lang"en">…

linux4.0新增32位ARM的系统调用

修改内核源码 Linux系统为每一个系统调用赋予一个系统调用号。当应用程序执行一个系统调用时&#xff0c;应用程序就可以知道执行和调用到哪个系统调用了&#xff0c;从而不会造成混乱。系统调用号一旦分配之后就不会有任何变更&#xff0c;否则已经编译好的应用程序就不能运行…

Unity游戏源码分享-精品即时战略游戏_官网60美刀素材

Unity游戏源码分享-精品即时战略游戏_官网60美刀素材 下载地址&#xff1a;https://download.csdn.net/download/Highning0007/88204017

chrome V3 插件开发 基础

目录 准备popup通信popup 发消息给 backgroundpopup 发消息给 content长期连接 如何页面上添加一个按钮&#xff1f;tabs.onUpdatedcontent-script.jsinject.js 右键菜单chrome.contextMenus举个例子添加关于报错&#xff08;cannot create item with duplicate id XXX&#xf…