当前位置: 首页 > news >正文

shell正则表达式

正则表达式

正则表达式匹配的是文本内容,linux的文本三剑客都是针对文本内容

grep

grep 过滤文本内容

sed 针对文本内容进行增删改查

awk 按行取列

文本三剑客都是按照行进行匹配

grep的作用:使用正则表达式来匹配文本内容

选项:

grep -m 匹配几次之后停止

grep -v 取反

grep -n 显示匹配的行号

grep -c 只统计匹配的行数

grep -o 仅显示匹配的结果

grep -q 静默模式,不输出任何信息

grep -A 数字 后几行

grep -B 数字 前几行

grep -C 数字 前后各几行

grep -e 逻辑或

grep -E 匹配扩展正则表达式

grep -f 匹配两个文件相同内容,以第一个文件为准

grep -r 递归目录 目录下的文件内容。软连接不包含在内

grep -R 递归目录 目录下的文件内容。软连接包含在内

sort和uniq

排序:

sort:以行为单位,对文件的内容进行排序

sort 选项 参数

cat file | sort 选项

sort -f 忽略大小写,默认会把大写字母排在后面

sort -b 忽略每行之前的空格(不是把空格删除,只是依然按照数字和字母的顺序排序)

sort -n 按照数字进行排序

sort -r 反向排序

sort -u 相同的数据仅显示一行

sort -o 把排序后的结果转存到指定的文件

uniq 去除连续重复的行,只显示一行

uniq -c 统计连续重复的行的次数,合并连续重复的行

uniq -u 显示仅出现一次的行(包括不是连续出现的重复行)

uniq -d 仅显示连续重复的行(不包括非连续出现的内容)

tr:用来对标准输出的字符进行替换,压缩和删除

tr 选项 参数

tr -c 保留字符集1的字符,其他的字符用字符集2来进行替换

tr -d 删除字符集中的一部分

tr -s 把字符集1的部分替换成字符集2的部分,连续重复出现的字符压缩成一个字符

cut

cut 快速裁剪 awk都可以按行取列

对字段进行截取和裁剪

cut -d 指定分隔符(默认的分隔符是tab键)

cut -f 对字段进行截取,指定输出段的内容

cut --complement 输出的时候排除指定的字段

cut --output -ddeliniter 更改输出内柔的分隔符

cut -b 以字节为单位进行截取

cut -c 以字符为单位进行截取

文件的拆分

split 大文件拆分成若干个小的文件

split -l 按行来进行分割

split -b 按照大小来进行分割
现在有一个日志文件,很大,5G,第一个能不能快速的打开?
拆分: split -l 按行 split -b 大小

这种文件推荐使用按大小

文件合并

cat

paste

cat合并和paste合并之间的区别

cat是上下合并

paste是左右合并

统计当前主机的连接状态

ss -antp |grep -v ‘^State’ |cut -d " " -f 1 |sort|uniq -c

正则表达式:

正则表达式:由一类特殊字符以及文本字符所编写的一个模式,模式用来匹配文件当中内容(字符)。

检验我们输入的内容是否满足规定,格式,长度等等要求。

主要用来匹配文本内容,命令的结果

通配符:只能用于匹配文件名和目录名。不能匹配文件的内容和命令结果。

正则表达式:

基本正则表达式

元字符(字符匹配)

. 任意单个字符,也可以是任意一个汉字

\ 转义符 恢复其本意

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

[^] 取反

^$ 空行

^# 不在中括号内,就是以什么为开头

表示次数,匹配字符出现的次数:

* 匹配前面的字符任意次,0次也可以。贪婪模式,尽可能的匹配

.* 匹配前面的任意字符,至少1次,匹配所有

\?匹配前面的字符0次或者1次,可有可无

\+ 匹配前面的字符,至少要出现一次
\{n\} 匹配前面的字符=n次,可以小于n,但是不能大于n,而且前面的字符必须要是连续出现
\{m,n\} 匹配前面的字符至少m次,至多有n次。必须是连续出现,超出的不在匹配范围

位置锚定:

^:以什么开头 行首锚定 ^[0-9]
$:以什么结尾 行尾锚定 [0-9]$
^root$:表示这一行只能有这个,多一个不能少一个不行
\<或者\b	词首锚定,匹配单词的左侧(连续的数字,字母下划线都算单词内部)
\>或者\b	词尾锚定,匹配单词的右侧

分组和逻辑关系

分组 :()

或者:	\|

扩展正则表达式

grep -E 不加斜杠,跟正则表达式一样

词尾词首/b是需要加上斜杠,其余没有区别

egrep=grep -E

相关文章:

  • 单例设计模式双重检查的作用
  • 视觉应用线扫相机速度反馈(倍福CX7000PLC应用)
  • 数据结构与算法-差分数组及应用
  • 苹果入局AI手机 iOS 18将应用AI功能
  • 查看nginx安装/配置路径,一个服务器启动两个nginx
  • Ansys Mechanical|学习方法
  • 群晖NAS本地部署并运行一个基于大语言模型Llama2的个人本地聊天机器人
  • JavaScript中 Map与reduce的应用
  • Java实现数字替代功能:卡码网54替换数字实践案例
  • Qwen2在Java项目中如何实现优雅的Function_Call工具调用
  • mongodb 集群安装
  • TalkingData数据统计:大数据时代的洞察与应用
  • 堆优化版Dijkstra求最短路-java
  • 高并发系统中面临的问题 及 解决方案
  • 怪物猎人物语什么时候上线?游戏售价多少?
  • [PHP内核探索]PHP中的哈希表
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • Android 架构优化~MVP 架构改造
  • Fabric架构演变之路
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Laravel核心解读--Facades
  • learning koa2.x
  • leetcode98. Validate Binary Search Tree
  • Less 日常用法
  • Spark学习笔记之相关记录
  • 警报:线上事故之CountDownLatch的威力
  • 聊聊hikari连接池的leakDetectionThreshold
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 面试遇到的一些题
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 入门到放弃node系列之Hello Word篇
  • ​VRRP 虚拟路由冗余协议(华为)
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • ## 1.3.Git命令
  • #Linux(帮助手册)
  • (39)STM32——FLASH闪存
  • (c语言+数据结构链表)项目:贪吃蛇
  • (JS基础)String 类型
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (第27天)Oracle 数据泵转换分区表
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (规划)24届春招和25届暑假实习路线准备规划
  • (十六)视图变换 正交投影 透视投影
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)项目管理杂谈-我所期望的新人
  • (转载)虚函数剖析
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .dwp和.webpart的区别
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道