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:过滤出不是以#开头的非空行

相关文章:
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&…...
将SM2根证书预置到chromium中
最近花了很多精力在做chromium的GmSSL适配,协议和算法都已经完成,这篇文章是关于将SM2根证书预置到chromium中 我的开发测试环境是macos12.4,从chromium的代码和文档中得知证书获取和校验都是通过操作系统以及native api接口完成,…...
linux安装mysql-8.0.33正确方式及常见问题
目录 获取mysql下载地址链接 解压安装包 复制文件到安装目录 添加用户和用户属组修改权限 创建存储数据的文件夹/usr/local/mysql 初始化安装 修改配置文件 创建日志文件并赋予对应权限 启动成功编辑 创建软链接 之前安装过mysql,时间比较长忘记安装步骤了今天…...
Vim的插件管理器之Vundle
1、安装Vundle插件管理器 Vim可以安装插件,但是需要手动安装比较麻烦,Vim本身没有提供插件管理器,所以会有很多的第三方的插件管理器,有一个vim的插件叫做 “vim-easymotion”,在它的github的安装说明里有列出对于不同…...
机器学习丨1. 机器学习概述
Author:AXYZdong 硕士在读 工科男 有一点思考,有一点想法,有一点理性! 定个小小目标,努力成为习惯!在最美的年华遇见更好的自己! CSDNAXYZdong,CSDN首发,AXYZdong原创 唯…...
清除pip安装库时的缓存
目录 1、命令清除缓存 2、路径手动清除 在使用pip安装Python库时,如果之前已经下载过该库,pip会默认使用缓存来安装库,而不是重新从网络上下载。缓存文件通常存储在用户目录下的缓存文件夹中,具体位置因操作系统和Python版本而异…...
gitee上传一个本地项目到一个空仓库
gitee上传一个本地项目到一个空仓库 引入 比如,你现在本地下载了一个半成品的框架,现在想要把这个本地项目放到gitee的仓库上,这时就需要我们来做到把这个本地项目上传到gitee上了。 具体步骤 1. 登录码云 地址:https://gite…...
力扣:63. 不同路径 II(Python3)
题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑网格中有障碍物。那么从…...
【C语言】每日一题(多数元素)
多数元素,链接奉上 方法 1.摩尔投票2.合理但错误的方法2.1暴力循环2.2排序求出中间元素中间元素 1.摩尔投票 先来简单的介绍摩尔投票: 摩尔投票是一种用来解决绝对众数问题的算法。 什么是绝对众数呢? 在一个集合中,如果一个元素…...
后端 .net7 Minimal API 限流中间件(微信小程序无师自通十)
我的微信小程序使用.net7 Minimal API 作为后端,当服务器摆上公网后,可以观察到很多的攻击行为和暴力访问。所以,我需要使用微软的限流中间件部署相应的功能在服务器上 关键字: AddFixedWindowLimiter using Microsoft.AspNetCo…...
背上沉重的书包准备面试之react篇
目录 react特性? react生命周期? state和props区别 react中setState执行机制? 在react类组件形式中,setState第二个参数的作用? react事件机制? react事件绑定方式有哪些? react组件之间…...
OpenCV-Python中的图像处理-霍夫变换
OpenCV-Python中的图像处理-霍夫变换 霍夫变换霍夫直线变换霍夫圆环变换 霍夫变换 霍夫(Hough)变换在检测各种形状的技术中非常流行,如果要检测的形状可以用数学表达式描述,就可以是使用霍夫变换检测它。即使要检测的形状存在一点破坏或者扭曲也是可以使…...
W5500-EVB-PICO做UDP Client进行数据回环测试(八)
前言 上一章我们用开发板作为UDP Server进行数据回环测试,本章我们让我们的开发板作为UDP Client进行数据回环测试。 连接方式 使开发板和我们的电脑处于同一网段: 开发板通过交叉线直连主机开发板和主机都接在路由器LAN口 测试工具 网路调试工具&a…...
npm install 中 --save 和 --save-dev 是什么?
npm,全名 Node Package Manager,套件管理工具,package.json 会记下你在项目中安装的所有套件。 假设在项目中安装 lodash npm i --save lodash这样在 dependencies 中会出现: 如果修改了导入方式: npm i --save-dev …...
【Nginx17】Nginx学习:目录索引、字符集与浏览器判断模块
Nginx学习:目录索引、字符集与浏览器判断模块 今天要学习的内容有几个还是大家比较常见的,所以学习起来也不会特别费劲。对于目录的默认页设置大家都不会陌生,字符集的设置也比较常见,而浏览器的判断这一块,可能有同学…...
CA/TA开发编程实战-视频课程
Hello大家好,上架一门新的视频课程,课程主要包含两大部分,第一部分搭建环境,第二部分从无到有的编写代码。带领大家"手把手"编写。 具体大纲如下: qemu v8环境搭建 搭建一个qemu_v8的环境,用于…...
(7)(7.1) 使用航点和事件规划任务
文章目录 前言 7.1.1 设置Home位置 7.1.2 视频:制作并保存多路点任务 7.1.3 视频:加载已保存的多航点任务 7.1.4 使用说明 7.1.5 提示 7.1.6 自动网格 7.1.7 任务指令 7.1.8 任务结束 7.1.9 任务重置 7.1.10 MIS_OPTIONS 7.1.11 任务再出发 …...
OCR相关模块——版面分析技术、表格文本识别
OCR相关模块——版面分析技术、表格文本识别 版面分析技术表格识别技术 版面分析技术 版面分析模型:飞桨用到了yolov2检测模型,对文档图片中的文本、表格、图片、标题与列表区域进行检测。当前主流是用分割做。 表格识别技术 参考博文...
mov转mp4格式怎么转?
mov转mp4格式怎么转?众所周知,MOV视频格式是由苹果公司推出的常用的视频格式,能够在苹果软件及设备上使用。但是,如果将其应用于其他软件和设备上的话,可能会遇到文件无法正常播放的情况。在这个时候,我们需…...
SSL握手协议相关概念
下图为握手协议的流程图,具体的解释参考博客: 【下】安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS_tenfyguo的博客-CSDN博客 下面梳理一下SSL协议中的一些细节。首先是相关名词:证书、…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
