35、正则表达式
一、正则表达式命令
正则表达式:匹配的是文本内容,linux的文本三剑客都是针对文本内容。
grep 过滤文本内容
sed 针对文本内容进行增删改查
awk 按行取列
文本三剑客----都是按照行进行匹配。
1.1、grep筛选:
grep的作用就是使用正则表达式来匹配文本内容。
选项:
-m 数字 匹配几次之后停止
[root@test1 opt]# grep -m 1 root /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@test1 opt]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
-v 取反
grep -v root /etc/passwd ##除了root,筛选所有
-n 显示匹配的内容及行号
[root@test1 opt]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
-c 只统计匹配的行数
[root@test1 opt]# grep -c root /etc/passwd
2
-o 仅显示匹配的结果
[root@test1 opt]# grep -o root /etc/passwd
root
root
root
root
-q 静默模式。不输出任何信息。
[root@test1 opt]# grep -q root /etc/passwd > /opt/123.txt
[root@test1 opt]# cat /opt/123.txt
[root@test1 opt]# grep -m 1 root /etc/passwd > /opt/123.txt
[root@test1 opt]# cat /opt/123.txt
root:x:0:0:root:/root:/bin/bash
-A after 数字,后几行
grep -A 3 root /etc/passwd
-B before 数字 ,前几行
grep -B 3 root /etc/passwd
-C 数字,前后各几行
grep -C 3 root /etc/passwd
-e 或者
grep -e root -e xy102 /etc/passwd
-E 匹配扩展正则表达式
-f 匹配两个文件相同的内容,以第一个文件为准
[root@test1 opt]# vim kl1.txt
abc
acv
abf123
234
456
aaa
bbb
ccc
abc
acv
abf123
234
456
aaa
bbb
ccc
abc
acv
abf[root@test1 opt]# vim kl1.txt123
345
qqq
aaa
abf
avg
afh[root@test1 opt]# grep -f kl.txt kl1.txt
123
aaa
abf
-r 递归目录 目录下的文件内容,软连接不包含在内。
[root@test1 opt]# grep -r 123 /opt/
/opt/test41.sh: echo 123 | passwd --stdin $user
/opt/test41.sh: echo 123 | passwd --stdin $user
匹配到二进制文件 /opt/.123.swp
-R 递归目录 目录下的文件内容,软连接包含在内。
[root@test1 opt]# grep -R abf /opt/
/opt/nginx-1.22.0/src/core/ngx_crc32.c: 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
/opt/999.txt:abf123
1.2、sort排序:
sort
以行为单位,对文件的内容进行排序
sort 选项 参数
-f:忽略大小写,相同字母默认大写排在前面
-b:忽略每行之前的空格
-n:按照数字大小进行排序,此时不是按照单个字符进行比较,而是行首所有连续的数字都能被识别,按照识别到的数字的大小进行排序。且此时字母排序优先级高于数字
-r:反向排序
-u:去重,相同内容仅显示一次
-o:把排序后的结果转存到指定文件
-k:指定字段(字符)进行排序
-t:指定字段的分隔符
[root@test1 opt]# sort 123.txt111
112
123
222
333
555
aaa
aaa
aaa
bbb
bbb
cc
ddd
DDD
EEE
nnn
cat file | sort 选项
-f 忽略大小写,默认会把大写字母排在前面
[root@test1 opt]# sort -f 123.txt111
112
123
222
333
555
aaa
aaa
aaa
bbb
bbb
cc
DDD
ddd
EEE
nnn
-b 忽略每行之前的空格,空格也显示(不是把空格删除,只是按照数字和字母的顺序排列)
[root@test1 opt]# sort -b 123.txt 123
345
345345
567
987
aaa
bbb
bbb
BD
bfvf
SD
sdfd
sds
-n 按照数字进行排序
[root@test1 opt]# sort -n 123.txt
aaa
bbb
bbb
BD
bfvf
SD
sdfd
sds123
345
345345
567
987
-r 反向排序
[root@test1 opt]# sort -r 123.txt
sds
sdfd
SD
bfvf
BD
bbb
bbb
aaa
987
567345
345
345123
-u 相同的数据只显示一行
[root@test1 opt]# sort -u 123.txt123
345345
567
987
aaa
bbb
BD
bfvf
SD
sdfd
sds
-o 把排序后结果转存到指定的文件
[root@test1 opt]# sort -u 123.txt123
345345
567
987
aaa
bbb
BD
bfvf
SD
sdfd
sds
[root@test1 opt]# cat 123.txt | sort -rno 234.txt
[root@test1 opt]# cat 234.txt
987
567345
345
345123
sds
sdfd
SD
bfvf
BD
bbb
bbb
aaa
1.3、uniq 去重
uniq 去除连续重复的行,只显示一行
-c 统计连续行的次数,合并连续重复的行
[root@test1 opt]# uniq -c 123.txt1 3451 5671 9871 1232 3451 bbb1 bfvf2 1 sdfd1 SD1 BD2 1 1 sds2 aaa1 bbb
-u 显示仅出现一次的行(包括不适合连续出现的重复行)
[root@test1 opt]# uniq -u 123.txt345
567
987123
bbb
bfvf
sdfd
SD
BDsds
bbb
-d 仅显示连续重复的行(不包括非连续出现的内容)
[root@test1 opt]# uniq -d 123.txt ##显示重复的行
345 aaa
1.4、tr压缩替换
tr:用来对标准输出的字符进行替换,压缩和删除。
-c 保留字符集1的字符,其他的字符用字符集2替换
echo 字符集 |tr -c “字符集1” “字符集2”
[root@test1 ~]# echo abc
abc
[root@test1 ~]# echo abc | tr -c "ab" "d"
abdd
-d 删除字符集中的一部分
echo abc |tr -d “a”
[root@test1 ~]# echo abc | tr -d "a"
bc
-s 把字符集1的部分替换成字符集2的部分,连续重复出现的字符压缩成一个字符
压缩:
[root@test1 ~]# echo aaabaaca | tr -s "a"
abaca
替换压缩:
[root@test1 ~]# echo aaabaaca | tr -s 'a' 'w'
wbwcw
1.5、cut
cut快速裁剪 awk都可以按行取列
对字段进行截取和裁剪。
-d 指定分隔符(默认的分隔符是tab键)
[root@test1 opt]# cut -d ':' -f 1-3 /etc/passwd
root:x:0
bin:x:1
daemon:x:2
-f 对字段进行截取,指定输出段的内容
[root@test1 opt]# cut -d ':' -f 1-3 /etc/passwd
root:0
bin:1
daemon:2
-b 以字节为单位进行截取
-c 以字符为单位进行截取
–complement 输出的时候排除指定的字段
[root@test1 opt]# head -n 1 /etc/passwd | cut -d ':' --complement -f 1-3
0:root:/root:/bin/bash
[root@test1 opt]# head -n 1 /etc/passwd | cut -d ':' --complement -f 1
x:0:0:root:/root:/bin/bash
–output-delimiter 更改输出内容的分隔符
[root@test1 opt]# head -n 1 /etc/passwd | cut -d ':' -f 1-3 --output-delimiter='@'
root@x@0
1.6、split文件的拆分:
split大文件拆分若干个小文件。
-l 按行来进行分割
[root@test1 opt]# split -l 30 test1.txt xy102
-b按照大小来分割
[root@test1 opt]# split -b 30m test1.txt xy102
面试题:
现在有一个日志文件,很大5g。第一个能不能快速打开?
拆分:-l 按行 -b 大小
这种大文件推荐使用按大小。
这种小文件推荐使用按行。
1.7、文件合并:
cat
paste
面试题:
cat合并和paste合并之间的区别:
cat是上下合并。
paste是左右合并。
cat 文本1 文本2 展示不改变
cat 文本1 文本2 > 文本3 合并以后传入文本3中
paste 文本1 文本2 展示不改变
paste 文本1 文本2 > 文本3 合并以后传入文本3中
面试题:主机连接状态有几种
[root@test1 opt]# ss -antp | grep -v 'State' | cut -d " " -f 1 | sort | uniq -c2 ESTAB15 LISTEN
三、正则表达式:
正则表达式:由一类特殊字符以及文本字符所编写的一个模式,模式又来匹配文件当中内容(字符)。
校验我们输入的内容是否满足。格式,长度等等要求。
主要用来匹配文本内容,命令的结果。
通配符:只能用于匹配文件名和目录名。不能匹配文件二点内容和命令结果。
正则表达式:
3.1、基本正则表达式:
元字符(字符匹配)
. :匹配任意单个字符\ :转义符:恢复字符的本意[] :匹配指定的范围内的任意单个字符或者数字,区分大小写,也可以用1-5,a-t这样的方式范围匹配[^] :取反,表示匹配除了^之后的内容^ :匹配以^之后内容开头的字符^# :匹配以#开头的行^$ :匹配空行[ ]:中括号里输入空格,就可以匹配空格注:匹配内容两边需要加引号,单引号双引号都可以
. 任意单个字符,也可以是一个汉字。
\ 转义符 ,恢复其本意。
ls | grep "\."
[] 匹配指定范围内的任意单个字符或者数字
[^]为取反
"^"为 以什么开头的行
^#:以#开头
^$:表示空行
表示次数,匹配字符出现的字数:
*匹配前面的字符任意次,0次也可以。
.*匹配前面的字符,至少有1次。匹配所有。
\?匹配前面的字符,没匹配到就是0次或者1次,可有可无。
\ + 匹配的前面字符,至少出现一次>=1。
\ {n \ }匹配前面的字符=n次,可以小于n,但是不能大于n,而且前面的字符必须是连续出现
\ {m,n \ }匹配前面的字符,最少m次,最多n次,必须是连续出现,超出的不在匹配范围。
\ {,n \ }匹配前面的字符,最多n次,必须是连续出现,超出的不在匹配范围。不能少n次,
\ {n, \ }匹配前面的字符,最少n次
位置锚定:
^:以什么为开头,行首锚定
$:以什么为结尾,行尾锚定
“^root$”:只包含root。
\ < 或者\ b 词首锚定,匹配单词的左侧(连续的数字,字母,下划线都算单词内部)
\ > 或者 \ b 词尾锚定,匹配单词的右侧
\b单词\b:匹配整个单词。空格隔开的也算整个单词。
^单词$:整行只有这一个单词。
区别:
分组和逻辑关系
分组()
或者 |
3.2、扩展正则表达式:
grep -E “” =egrep “”
987-123-4567
987 456-1230
(123) 456-7890
作业:
1、显示/etc/passwd中以sh结尾的行;
[root@localhost opt]# cat /etc/passwd | egrep "sh\b"
2、查找/etc/inittab中含有“以s开头,并以d结尾的单词”模式的行;
[root@localhost opt]# cat /etc/inittab | egrep "\bs[a-z]+d\b"
3、查找ifconfig命令结果中的1-255之间的整数;
[root@localhost opt]# ifconfig | egrep -o "\b[1-9]\b|\b[1][0-9][0-9]\b|\b[2][0-5][0-5]\b"
4、在/etc/passwd中取出默认shell为bash的行;
[root@localhost opt]# cat /etc/passwd | egrep "\bbash\b"
5、高亮显示passwd文件中冒号,及其两侧的字符
[root@localhost opt]# cat /etc/passwd | egrep ".?[:]+.?"
相关文章:
35、正则表达式
一、正则表达式命令 正则表达式:匹配的是文本内容,linux的文本三剑客都是针对文本内容。 grep 过滤文本内容 sed 针对文本内容进行增删改查 awk 按行取列 文本三剑客----都是按照行进行匹配。 1.1、grep筛选: grep的作用就是…...
Ubuntu20.04中复现FoundationPose
Ubuntu20.04中复现FoundationPose 文章目录 Ubuntu20.04中复现FoundationPose1.安装cuda和cudnn2.下载相关资源3.环境配置4.运行model-based demo5.运行ycbv demoReference 🚀 非常重要的环境配置 🚀 ubuntu 20.04cuda 11.8.0cudnn v8.9.7python 3.9.19…...
【Qt快速入门(四)】- QLabel文本框的使用
目录 Qt快速入门(四)- QLabel文本框的使用QLabel文本框的使用QLabel的基本用法1. 创建和设置文本2. 动态设置文本 设置文本样式1.设置字体和颜色2.文本对齐方式3.富文本显示 显示图片QLabel的交互功能可点击标签 QLabel的高级特性1.缩放图片以适应标签大…...
用Python设置Excel工作表网格线的隐藏与显示
Excel表格界面的直观性很大程度上得益于表格中的网格线设计,这些线条帮助用户精确对齐数据,清晰划分单元格。网格线是Excel界面中默认显示的辅助线,用于辅助定位,与单元格边框不痛,不影响打印输出。然而,在…...
自回归模型胜过扩散模型:用于可扩展图像生成的 Llama
📜 文献卡 Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation作者: Peize Sun; Yi Jiang; Shoufa Chen; Shilong Zhang; Bingyue Peng; Ping Luo; Zehuan YuanDOI: 10.48550/arXiv.2406.06525摘要: We introduce LlamaGen, a new family …...
访问外网的安全保障——反向沙箱
反向沙箱作为一种网络安全技术,其核心理念在于通过构建一个隔离且受控的环境,来有效阻止潜在的网络威胁对真实系统的影响。在当今日益复杂的网络环境中,如何借助反向沙箱实现安全上网,已成为众多用户关注的焦点。 随着信息化的发…...
【绝对有用】C++ 字符串进行排序、vector增加内容 和 剔除值
在 C 中对字符串进行排序,可以使用标准库中的 std::sort 函数。std::sort 函数可以用于容器或范围内的元素排序,包括字符串中的字符。以下是一个简单的示例代码,展示了如何对字符串中的字符进行排序: #include <iostream> …...
GenICam标准(一)
系列文章目录 GenICam标准(一) GenICam标准(二) GenICam标准(三) GenICam标准(四) GenICam标准(五) GenICam标准(六) 文章目录 系列文…...
【Redis】分布式锁基本理论与简单实现
目录 分布式锁解释作用特性实现方式MySQL、Redis、Zookeeper三种方式对比 原理 reids分布式锁原理目的容错redis简单分布式锁实现锁接口实现类下单场景的实现容错场景1解决思路优化代码 容错场景2Lua脚本Redis利用Lua脚本解决多条命令原子性问题 释放锁的业务流程Lua脚本来表示…...
Web开发技术大作业(HTML\CSS\PHP\MYSQL\JS)
从6月13日到6月15日,经过一系列的操作,终于把老师布置的大作业写完了,虽然有很多水分,很多东西都是为了应付(特别是最后做的那几个网页),真的是惨不忍睹,不过既然花时间写了…...
【全开源】沃德会务会议管理系统(FastAdmin+ThinkPHP+Uniapp)
沃德会务会议管理系统一款基于FastAdminThinkPHPUniapp开发的会议管理系统,对会议流程、开支、数量、标准、供应商提供一种标准化的管理方法。以达到量化成本节约,风险缓解和服务质量提升的目的。适用于大型论坛、峰会、学术会议、政府大会、合作伙伴大会…...
尚硅谷大数据技术ClickHouse教程-笔记01【ClickHouse单机安装、数据类型】
视频地址:一套上手ClickHouse-OLAP分析引擎,囊括Prometheus与Grafana_哔哩哔哩_bilibili 01_尚硅谷大数据技术之ClickHouse入门V1.0 尚硅谷大数据技术ClickHouse教程-笔记01【ClickHouse单机安装、数据类型】尚硅谷大数据技术ClickHouse教程-笔记02【表引…...
生产管理系统看板,在自动化设备领域的创新应用
在自动化设备领域,生产管理系统看板的创新应用是一项引人注目的技术进步。以广州某自动化设备有限公司为例,他们是一家涂装工程设备制造企业,将讯鹏生产管理系统电子看板成功应用于全自动立式静电喷粉线、卧式静电喷粉线、氟碳喷涂生产线等领…...
分享一个图片转换工具XnConvert
目录 stablediffusion3 生成图片效果图图片转换工具XnConvertpixzip stablediffusion3 生成图片效果图 今天在使用stablediffusion3时,尝试生成了几张Java的图片,发现确实很好看,文生图的效果超出我的预期,忍不住想要给自己的csd…...
Nginx后端超时504重复请求
在一次业务中客户端请求osb平台再经过nginx转发后端,开发反馈请求次数大于1导致问题,经排查客户端请求一次,osb平台设置超时为30s,nginx配置等待上游服务器响应时最多等待30秒 部分配置文件 upstream xx {server 10.6.6.1:8080 w…...
环境配置04:Pytorch下载安装
说明: 显存大于4G的建议使用GPU版本的pytorch,低于4G建议使用CPU版本pytorch,直接使用命令安装对应版本即可 GPU版本的pytorch的使用需要显卡支持,需要先安装CUDA,即需要完成以下安装 1.查看已安装CUDA版本 GPU对应…...
【杂记-浅谈私有地址】
私有地址 一、私有IP地址概述1、私有IP地址的实用性2、私有IP地址的局限性 二、私有IP地址范围1、A类私有地址2、B类私有地址3、C类私有地址 三、私有IP地址与公网IP地址的区别 一、私有IP地址概述 私有IP地址是互联网工程任务组(IETF)为组织机构内部使…...
Java基础学习-数组
目录 数组定义 注意点: 地址值是数组在内存中实际存储的地址。 案例遍历:遍历数组得到每一个元素,求数组里面所有数据和 案例:定义数组,遍历能被3整除的数字 案例:遍历一个数组,奇数将当前…...
爬虫 pandas Linux Flume Pig填空题
目录 试卷:Python网络数据处理 答案 试卷:Pandas基础操作 答案 试卷:Linux基础指令 答案 试卷:Apache Flume基础指令 答案 试卷:Apache Pig基础指令 答案: Hadoop题 答案 试卷:Pyth…...
Spring框架中哪些地方使用了反射
Spring框架中哪些地方使用了反射? 1. 依赖注入:Spring 使用反射机制获取对象并进行属性注入,从而实现依赖注入。 2. AOP:Spring AOP 使用 JDK 动态代理或者 CGLIB 字节码增强技术来实现 AOP 的切面逻辑,这其中就包含…...
难辨真假的Midjourney案例(附提示词):适合练手
人物 时尚女孩 Street style fashion photo, full-body shot of a young Chinese woman with long curly black hair, walking confidently with a crowd of people down a sidewalk in Hong Kong, wearing a emerald green Gucci maxi dress & gold jewelry, sunset lig…...
数据库讲解---(数据库保护)【上】
一.事务 1.1事务的概念【重要】 事务:“将一组数据库操作打包起来形成一个逻辑独立的单元,这个工作单元不可分割,其中包含的数据要么全部都发生,要么全部都不发生”。 在SQL中,界定事务的语句有三条: B…...
【Android】【Compose】Compose的简单介绍
前言 Jetpack Compose 是谷歌推出的用于构建现代化 Android 应用界面的工具包。它采用了声明式的方式来定义用户界面,与传统的 XML 布局和视图层次结构相比,Compose 提供了更直观、更简洁的方式来创建和管理界面组件。 需求配置 Android 版本要求 An…...
对接钉钉Stream模式考勤打卡相关事件的指南
钉钉之前的accessToken是公司级别的,现在的accessToken是基于应用的,接口的权限也是基于应用的。所以第一步是在钉钉开放平台(https://open-dev.dingtalk.com/)创建一个应用。 创建好应用之后,因为我们后续还需要调用钉…...
CRMEB PRO企业微信通讯录配置
企业微信通讯录配置 登录企业微信管理后台 企业微信 1、点击【管理工具】找到【通讯录同步】点击进入 2、点击【开启API接口同步】 进入设置【通讯录同步】页面后,权限一栏,勾选【API编辑通讯录】勾选【开启手动编辑】; 3、点击下图箭头所…...
直播新篇章 | 金仓数据库“零距离”探索与知识挑战双重奏
KING大咖成就计划 全新进阶!!!携手知识竞答挑战赛震撼来袭~为您带来一场别开生面的金仓数据库探索之旅与知识竞答盛宴! 直 播 活 动 01 大咖引领,KING BASE产品“零距离”体验 您是否对金仓数据库充满好奇🧐…...
List的介绍
1. 什么是List List是一个接口,继承自Collection。 Collection也是一个接口,该接口中规范了后序容器中常用的一些方法。 Iterable也是一个接口,表示实现该接口的类是可以逐个元素进行遍历。 2. 常见接口介绍 List中提供了好的方法&#x…...
Uniapp获取具体地理位置
使用uniapp自带uni.getLocation获取当前定位经纬度 再调用高德逆地理编码API,查到具体位置信息 https://restapi.amap.com/v3/geocode/regeo?location${longitude},${latitude}&key${key}&extensionsall 但是个人申请的key,有配额限制 最多每…...
Kafka基础教程
Kafka基础教程 资料来源:Apache Kafka - Introduction (tutorialspoint.com) Apache Kafka起源于LinkedIn,后来在2011年成为一个开源Apache项目,然后在2012年成为一流的Apache项目。Kafka是用Scala和Java编写的。Apache Kafka是基于发布-订…...
视频智能分析平台智能边缘分析一体机安防监控平台打手机检测算法工作原理介绍
智能边缘分析一体机的打手机检测算法是一种集成了计算机视觉和人工智能技术的先进算法,专门用于实时监测和识别监控画面中的打手机行为。以下是关于该算法的详细介绍: 工作原理 1、视频流获取: 智能边缘分析一体机首先通过连接的视频监控设…...
wordpress修改背景/推广页面
20172330 2017-2018-1 《Java程序设计》第三周学习总结 教材学习内容总结 这一章的主要内容是关于类与对象,通过对String类,Random类,Math类等一系列道德具体讲解与应用,让我们对创建对象有了更深的了解。 同时也对格式化输出进行…...
公众平台 wordpress/快速seo整站优化排行
Notepad Java开发环境配置 2008-12-29 22:13:04分类: Java uiNotepad Java开发环境配置1. 安装JDK下载JDK 6下载http://developers.sun.com.cn/download/java_se.html运行安装程序,按照屏幕提示完成JDK 6的安装,下面为安装路径:E:…...
公司做网站怎么样/资源优化排名网站
智慧 毅力 无所不能 正确性、健壮性、可靠性、效率、易用性、可读性、可复用性、兼容性、可移植性... Lua和C交互详细总结 转自:http://cn.cocos2d-x.org/tutorial/show?id1474 一、Lua堆栈 要理解Lua和C交互,首先要理解Lua堆栈。 简单来说࿰…...
运城学院教务网络管理系统/江门关键词优化公司
在使用命令 pip install -U pip 更新 pip 包管理器时,出现了以下错误: 然后使用 pip 再去安装其他包时,又报异常:ModuleNotFoundError: No module named pip,称找不到 pip 模块。 这时候只需要执行如下命令即可&…...
英文营销网站建设/如何推广网站运营
一:返回函数 1 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 2 1 def lazy_sum(*args): 2 3 def sum(): 4 ax 0 5 for n in args: 6 ax ax n 7 return ax 8 return sum a 当我们…...
西安做网站科技有限公司/免费seo在线优化
郑州轻工业学院实 训 报 告实训名称: 程序设计基础实训姓 名:院 (系):专业班级:学 号:指导教师:成 绩:时间: 2012 年 6 月 25 日至 2012 年 9 月 14 日目 录1需求说明11.1电话薄管理…...