正则表达式 通配符 awk文本处理工具
目录
什么是正则表达式
概念
正则表达式的结构
正则表达式的组成
元字符
元字符点(.)
代表字符.
点值表示点需要转义 \
r..t 代表r到t之间任意两个字符
过滤出小写
过滤出非小写
space空格 [[:space:]]
表示次数
位置锚定
例:
分组 或
扩展
表示邮箱
表示手机号
AWk
格式
选项
表达式
处理动作
例:
awk 常见的内置变量
拓展
awk数组计算 (默认使用关联数组)
什么是正则表达式
概念
正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE),又称规则表达式,是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。
正则表达式的结构
shell: /bin/bash
正则表达式:匹配的是文章中的字符
通配符:匹配的是文件名 (?任意单个字符)
元字符:不表示本来的含义,在正则表达式中有特殊含义的字符
正则表达式的组成
1.代表字符 . 单个任意字符 [ ]单个字符 [a b c] a或b或c
2.表示次数
3.位置锚定 ^ $
4.分组 或
元字符
. 匹配任意单个字符,可以是一个是汉字

[ ] 匹配指定范围内的任意单个字符 [af]

[^] 匹配指定范围外的任意单个字符 [^af]

元字符点(.)
代表字符.

点值表示点需要转义 \

r..t 代表r到t之间任意两个字符

过滤出小写

过滤出非小写

space空格 [[:space:]]

表示次数
* 表示0到正无穷
.* 表示任意长度的字符 (不包括0次)
\? 可有可无 0或1次
\+ 一次及以上, 一次到正无穷 >=1 ( [[:alnum:]] 字母和数字 )

\{3\} 前面字符出现最少三次 \{N\}

\{3,5} 前面字符出现3到5次 \{n,m\}
位置锚定
^ 开头
$ 结尾
^[[:space:]]*$ 空白行
\b 字符串开头
\< 字符串开头
\b 字符串结尾
\> 字符串结尾
例:
词首锚定

词尾锚定

分组 或
分组 ( ) 使用括号将需要组合的字符 括起来

或 : \|

扩展
grep -E 使用拓展表达式
egrep 默认使用扩展表达式 (简便操作)
表示邮箱
echo "xyc1234@qq.com" |grep -E "[[:alnum:]_]+@[[:alnum:]_]+\.[[:alnum:]_]+"
xyc1234@qq.com

表示手机号
echo "13384402293"|grep -E "\b1[3456789][0-9]{9}\b"
13384402293

AWk
AWK 是一种与语言,文本处理工具 加载一行处理一行
vim 也是文本处理工具 缺点:内存不足时打不开文件
vim是将整个文件加载到内存中处理,如果内存不够大,无法打开处理文件
akw的内置变量和shell环境中的变量会有冲突 ,必须使用‘ ’单引号
awk 取列 主要功能
格式
awk 选项 ‘表达式 {处理动作}‘
选项
-F 指定分隔符
-V 指定变量
表达式
awk 的语言的表达式
1.不写没有
2.找到特定行
处理动作
print 打印
prontf 打印
awk ’{print $2}' 以空格为分隔符 取第n列 ,n大于等于0
awk 内置变量
$0(全文) $1(第一列) $2(第二列)
例:
awk 'root‘开头的行{print}'
[root@localhost/lll] # awk '/^root/ {print } ' /etc/passwd
root:x:0:0:root:/root:/bin/bash

awk 内置变量 $0(全文) $1(第一列) $2(第二列)

查看磁盘大小 打印第五行

awk 常见的内置变量
awk 选项 ‘模式{print }’
FS 指定分隔符 默认空格 与 “-F”作用相同 -v "FS=:"
[root@localhost~] # awk -v FS=':' '{print $1FS$3}' /etc/passwd
#此处FS 相当于于变量 -v 变量赋值 相当于 指定: 为分隔符
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7
OFS 输出时的分割符
[root@localhost~] # awk -v FS=':' -v OFS='==' '{print $1,$3}' /etc/passwd
root==0
bin==1
daemon==2
adm==3
lp==4
sync==5
shutdown==6
halt==7
mail==8
operator==11
games==12
NF 打印每行有多少字段 倒数第二列 $(NF-1) 倒数第一列$NF
[root@localhost~] # awk -F: '{print NF}' /etc/passwd
7
7
7
7
7
7
7
[root@localhost~] # df |awk '{print $(NF-1) }' #倒数第二行
已用%
14%
0%
0%
1%
0%
1%
4%
1%
1%
1%
18%
1%
0%
[root@localhost~] # df |awk '{print $(NF) }'
挂载点
/
/dev
/dev/shm
/run
/sys/fs/cgroup
/123
/456
/zzz
/mnt
/home
/boot
/run/user/42
/run/user/0
NR 显示行号 awk ‘NR==2 {print $1}' 打印第二行的第一个字段
[root@localhost~] # awk '{print $1,NR}' /etc/passwd #显示第一列的行号
root:x:0:0:root:/root:/bin/bash 1
bin:x:1:1:bin:/bin:/sbin/nologin 2
daemon:x:2:2:daemon:/sbin:/sbin/nologin 3
adm:x:3:4:adm:/var/adm:/sbin/nologin 4
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 5
sync:x:5:0:sync:/sbin:/bin/sync 6
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 7
halt:x:7:0:halt:/sbin:/sbin/halt 8
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 9
operator:x:11:0:operator:/root:/sbin/nologin 10
[root@localhost~] # awk 'NR==2 {print $1}' /etc/passwd
#只取第二行的第一个字段
bin:x:1:1:bin:/bin:/sbin/nologin
拓展
打印出几点几分到几点几分的日志?
awk '/几点几分/,/几点几分/' 日志文件
awk数组计算 (默认使用关联数组)
关联数组下标为单词
awk 建立数组
[root@localhost~] # awk 'BEGIN {a[1]="lisi"; a[2]="liwu";print a[1],a[2]}'
lisi liwu
awk 'BEGIN {a[1]="lisi"; a[2]="liwu";for(i in a) print a[1],a[2]}'
lisi liwu
lisi liwu
相关文章:
正则表达式 通配符 awk文本处理工具
目录 什么是正则表达式 概念 正则表达式的结构 正则表达式的组成 元字符 元字符点(.) 代表字符. 点值表示点需要转义 \ r..t 代表r到t之间任意两个字符 过滤出小写 过滤出非小写 space空格 [[:space:]] 表示次数 位置锚定 例:…...
三、ts高级笔记,
文章目录 18、d.ts声明文件19、Mixin混入20、Decorator装饰器的使用21、-高级proxy拦截_Reflect元储存22、-高级写法Partial-Pick23、Readonly只读_Record套对象24、高阶写法Infer占位符25、Inter实现提取类型和倒叙递归26、object、Object、{}的区别27、localStorage封装28、协…...
二十一、数组(6)
本章概要 数组排序Arrays.sort的使用并行排序binarySearch二分查找parallelPrefix并行前缀 数组排序 根据对象的实际类型执行比较排序。一种方法是为不同的类型编写对应的排序方法,但是这样的代码不能复用。 编程设计的一个主要目标是“将易变的元素与稳定的元素…...
flask依据现有的库表快速生成flask实体类
flask依据现有的库表快速生成flask实体类 在实际开发过程中,flask的sqlalchemy对应的model类写起来重复性较强,如果表比较多会比较繁琐,这个时候可以使用 flask-sqlacodegen 来快速的生成model程序或者py文件,以下是简单的示例&a…...
.NET6 开发一个检查某些状态持续多长时间的类
📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !序言 在代码的世界里,时常碰撞…...
链表K个节点的组内逆序调整问题
链表K个节点的组内逆序调整问题 作者:Grey 原文地址: 博客园:链表K个节点的组内逆序调整问题 CSDN:链表K个节点的组内逆序调整问题 题目描述 LeetCode 25. Reverse Nodes in k-Group 本题的 follow up 是: Fol…...
安卓隐私指示器学习笔记
最近了解到Google 在Android12上新增了权限指示器,可以在信号栏的右侧显示当前访问录音机和Camera的应用,点击后可以跳转到相应应用的权限界面,消费者可以控制权限的开启和关闭。国内手机厂商最近几年都在增加隐私看板供能,消费者…...
【Jenkins】jenkins发送邮件报错:Not sent to the following valid addresses:
jenkins报错未能发送邮件到指定邮箱 注意:这是在系统配置中修改 在系统配置》邮件通知中添加配置信息 注意:这个是在项目的配置下修改 配置完成后,重新执行发送邮件成功!!!...
CSS3制作3D爱心动画
1、什么是CSS css,即层叠样式表的简称,是一种标记语言,有浏览器解释执行用来使页面变得更美观。 2、选择器 css3中新增了一些选择器,如下: 3、新样式 边框 css3新增了三个边框属性,分别是: bo…...
Python Opencv实践 - 全景图片拼接stitcher
做一个全景图片切片的程序Spliter 由于手里没有切割好的全景图片资源,因此首先写了一个切片的程序spliter。 如果有现成的切割好的待拼接的切片文件,则不需要使用spliter。 对于全景图片的拼接,需要注意一点,各个切片图片之间要有…...
echarts 几千条分钟级别在小时级别图标上展示
需求背景解决效果ISQQW代码地址strategyChart.vue 需求背景 需要实现 秒级数据几千条在图表上显示,(以下是 设计图表上是按小时界别显示数据,后端接口为分钟级别数据) 解决效果 ISQQW代码地址 链接 strategyChart.vue <!--/** * author: liuk *…...
操作系统的中断与异常(408常考点)
为了进行核心态和用户态两种状态的切换,引入了中断机制。 中断是计算机系统中的一种事件,它会打断CPU当前正在执行的程序,转而执行另一个程序或者执行特定的处理程序。中断可以来自外部设备(如键盘、鼠标、网络等)、软…...
linux下的工具---vim
一、了解vim 1、vim是linux的开发工具 2、vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行…...
代码随想录算法训练营第六十天|84. 柱状图中最大的矩形
LeetCode 84. 柱状图中最大的矩形 题目链接:84. 柱状图中最大的矩形 - 力扣(LeetCode) 和接雨水还挺像的。 代码: #python class Solution:def largestRectangleArea(self, heights: List[int]) -> int:heights.insert(0, 0…...
P14 C++局部静态变量static延长生命周期
目录 01 前言 02 变量的作用域与生命周期 2.1 什么是作用域: 2.2 什么是变量的生命周期: 03 局部静态 3.1非静态变量例子 3.2静态变量例子 04 全局变量 05 后话 01 前言 在前几期里,我们了解了static关键字在特定上下文中的含义。 …...
C语言:写一个函数,求字符串的长度,在main函数中输入字符串并输出其长度(指针)
分析: 在程序中,定义一个函数 fix,该函数使用指针变量来访问字符串中的每个字符,并计算出字符串的长度。fix 函数的参数为指向 char 类型的指针变量 p,表示需要计算长度的字符串。 在主函数 main 中,定义一…...
CentOS7安装Docker运行环境
1 引言 Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,…...
单片机调试技巧--栈回溯
在启动文件中修改 IMPORT rt_hw_hard_fault_exceptionEXPORT HardFault_Handler HardFault_Handler PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE EQMRSEQ r0, msp ; [2]0 > Z1, get fault context from h…...
分布式锁之基于redis实现分布式锁(二)
2. 基于redis实现分布式锁 2.1. 基本实现 借助于redis中的命令setnx(key, value),key不存在就新增,存在就什么都不做。同时有多个客户端发送setnx命令,只有一个客户端可以成功,返回1(true);其他…...
python中%s的用法(字符串变量赋值办法),长字符串换行办法
参考: http://wap.mobiletrain.org/about/BBS/142752.html https://blog.csdn.net/PolarisRisingWar/article/details/131134627 https://baijiahao.baidu.com/s?id1756094563884490493&wfrspider&forpc 字符串变量赋值 "Hello, %s. Today is %s.&q…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
