文本内容处理命令和正则表达式
文本内容处理命令
grep
用来过滤文本内容,以匹配要查询的结果。
-m 数字 匹配几次后停止:
grep -m 1 /root/etc/passwd #查找包含root的行
-v 取反
-i 忽略字符的大小写,默认的,可以不加
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-q 静默模式
-A 数字 after 包含匹配到的行,以及后几行。
-B 数字 包含匹配到的行,以及前几行
-C 数字 包含匹配到的行,以及前后各几行
-w 匹配整个单词
-E 使用扩展正则表达式 egrep=grep -E
-f 匹配两个文件中的相同内容,以第一个文件的内容为准
-r 递归目录,查找文件内容,软连接的内容不包含
-R 递归目录,查找文件内容,包含软连接的内容
grep -m \# 匹配\#次后停止
grep -m 1 root /etc/passwd #多个匹配只取第一个-A \# after, 后\#行
grep -A3 root /etc/passwd #匹配到的行后3行也显示出来
-B \# before, 前\#行
-C \# context, 前后各\#行grep [] file 默认使用正则表达式来匹配模式
“^……”表示以……开头,“……$”表示以……结尾
“^$”表示空行
ifconfig ens33 |grep -Eo "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+"|head -1
ifconfig ens33 |grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}"|head -1
sort
sort 对文本文件中的数据进行排序
sort -n 将字符串按数值排序
sort -M 将三字符的月份名按月份排序(常用于Linux日志文件每行起始的时间戳)
sort -b 排序时忽略起始的空白字符
sort -r 逆序排序(升序变降序,便于查看目录中哪些文件占用磁盘空间最多)
sort -R 随机排序
sort -f 选项忽略(fold)字符串中的字符大小写
sort -u 选项(独特,unique),合并重复项,即去重
sort -k 排序键从POS1位置开始,到POS2位置结束(如果指定了POS2的话)
sort -t 指定字段分隔符
例:sort -t ':' -k 3 -n /etc/passwd
uniq
uniq 单独使用是对连续重复的行去重
uniq -c 显示每行连续出现的次数
uniq -d 仅显示连续重复过的行
uniq -u 仅显示不曾连续重复的行
cat log|cut -d" " -f1|sort|uniq -c|sort -nr |head 查看访问日志,找出访问前10名的用户
tr
格式:tr [选项]... SET1 [SET2]
# SET 是一组字符串,一般都可按照字面含义理解
tr -d 删除
tr -s 压缩
tr -c 用字符集2中的字符替换字符串1中字符集的补集,要求字符集为ASCII。
cut
cut -d (delimiter): 指明分隔符,默认tab
cut -f 想要获取的字段
#: 第#个字段,例如 3
#,#,#:离散的多个字段,例如 1,3,6
#-#:连续的多个字段, 例如 1-6
混合使用:1-3,7
cut -c 取每行第几个字符
cut -b 取每行第几个字符
cut --complement 排除指定的字段
cut --output-delimiter 替换分隔符
例:cut -d ":" -f 1-3 /etc/passwd # 1-3表示1到3
cut -d ":" -f 1,3 /etc/passwd # 1,3表示1和3
cut d ":" -f 1-3 --output-delimiter=" " /etc/passwd # 将“:”分隔符替换为“空格”
split
split [-b ][-C ][-l ][要切割的文件][输出文件名前缀][-a ]
split -b<字节> 指定按多少字节进行拆分,也可以指定 k、M、G、T 等单位。
split -<行数>或-l<行数> 指定每多少行要拆分成一个文件。
输出文件名前缀:设置拆分后的文件的名称前缀,没有指定拆分后文件的命名方式的情况下,split 会默认采用 x 字符作为文件前缀,并在前缀后加上编号,默认从 aa 开始。
split -a<后缀长度>:默认的后缀长度是 2,也就是按 aa、ab、ac 这样的格式依次编号。
例
统计当前主机状态
ss -antp | grep -v '^State' | cut -d ' ' -f 1 | sort | uniq -c
统计nginx的访问日志当中多次出现的ip地址
cat /var/log/nginx/access.log | cut -d " " -f 1 | sort | uniq -c
正则表达式
通配符:用来匹配文件名或者目录名
*:任意一个或多个字符
?:任意的单个字符
匹配任意单个字符
[a-z]
[A-Z]
[0-9]
正则表达式
按照一定的格式和符号来匹配文件内容(命令输出的结果)
正则表达式的格式:
基本正则表达式 grep
扩展正则表达式 grep -E = egrep
使用正则表达式,匹配内容最好是用 引号 引起来。
元字符
.:任意单个字符
\:表示转义符
[0-9]:匹配文件内容的任意单个数字
[a-z]:匹配文件内容的任意单个小写字母
[A-Z]:匹配文件内容的任意单个大写字母
():分组
[^]:取反
[:alnum:]:字母和数字,等价于**[0-9a-zA-Z]**
[:alpha:]:代表任何英文大小写字符,亦即 [A-Za-z]
[[:lower:]]:小写字母相当于 [a-z]
[[:upper:]]:大写字母相当于 [A-Z]
[[:blank:]]:空白字符(空格和制表符)
[:space:]:包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比 [:blank:] 包含的范围广
[:cntrl:]:不可打印的控制字符(退格、删除、警铃…)
[:digit:]:十进制数字
[:xdigit:]:十六进制数字
[:graph:]:可打印的非空白字符
[:print:]:可打印字符
[:punct:]:标点符号
\w:匹配单词构成部分,等价于**[[:alnum:]]**
\W:匹配非单词构成部分,等价于**[^_[:alnum:]]**
\S:匹配任何非空白字符。等价于 [^ \f\n\r\t\v]
\s:匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [\f\n\r\t\v]
匹配次数
*:任意字符,表示匹配前面的任意字符,0次,尽可能多的匹配
.*:匹配任意长度的字符,最少要有一次。也就是匹配所有
?:匹配前面的字符0次或者1次,可有可无
\+:匹配前面的字符,最少出现1次有且>=1
\{n\}:匹配前面的字符等于多少次
\{m,n\}:匹配前面的字符最少m次,最多n次
\{,n\}:匹配前面的最多n次,只要比n小,都算
\{n, \}:匹配前面的字符至少n次,只要比n大,都算
使用拓展正则表达式将"\"去掉即可
位置锚定
^:以什么开始
$:以什么结尾
^$:空行(tab或\n)
^root$ :匹配整个单词,且这一行只有这个单词
词首锚定:\b
词尾锚定:\b
例
显示/etc/passwd中以sh结尾的行
grep -E "sh$" /etc/passwd
查找/etc/inittab中含有“以s开头,并以d结尾的单词”模式的行
grep -E "\bs[a-z]*d\b" /etc/inittab
查找ifconfig命令结果中的1-255之间的整数
ifconfig ens33 | grep -Eo "\b[1-9]\b|\b[1-9][0-9]\b|\b1[0-9]{2}\b|\b2[0-4][0-9]\b|\b25[0-5]\b"
在/etc/passwd中取出默认shell为bash的行
grep -E "bash$" /etc/passwd
高亮显示passwd文件中冒号,及其两侧的字符
grep -E ".?:.?" /etc/passwd
相关文章:
文本内容处理命令和正则表达式
文本内容处理命令 grep 用来过滤文本内容,以匹配要查询的结果。 -m 数字 匹配几次后停止: grep -m 1 /root/etc/passwd #查找包含root的行 -v 取反 -i 忽略字符的大小写,默认的,可以不加 -n 显示匹配的行号 -c 统计匹配的…...
【PlantUML系列】类图(一)
目录 一、类 二、接口 三、抽象类 四、泛型类 五、类之间的关系 六、添加注释 七、包图 八、皮肤参数 一、类 使用class关键字定义类,类名后跟大括号,声明类的属性和方法。 属性:格式为{visibility} attributeName : AttributeType…...
【Leetcode Top 100】21. 合并两个有序链表
问题背景 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 数据约束 两个链表的节点数目范围是 [ 0 , 50 ] [0, 50] [0,50] − 100 ≤ N o d e . v a l ≤ 100 -100 \le Node.val \le 100 −100≤Node.val≤100 l 1 l_1 …...
【真正离线安装】Adobe Flash Player 32.0.0.156 插件离线安装包下载(无需联网安装)
网上很多人声称并提供的flash离线安装包是需要联网才能安装成功的,其实就是在线安装包,而这里提供的是真正的离线安装包,无需联网即可安装成功。 点击下面地址下载离线安装包: Adobe Flash Player 32.0.0.156 for IE Adobe Fla…...
UG NX二次开发(C#)-如何进行NX多版本的编译
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、以删除对象为例3、解决方案1、前言 由于UG NX的版本不同,新版本与旧版本开发过程中,如果是在一个工程中,其会出现低版本不能编译高版本NX的问题,这是因为高版本会引入新的函数,或者…...
Spark优化--开发调优、资源调优、数据倾斜调优和shuffle调优等
针对Spark优化,我们可以从多个角度进行,包括开发调优、资源调优、数据倾斜调优和shuffle调优等。以下是一些具体的优化方法: 1. 开发调优 避免创建重复的RDD:对于同一份数据,只应该创建一个RDD,避免创建多…...
911事件反思:灾难通信和ddos之间的取舍
流量分析与监控 建立基线流量模型:在正常情况下监控和记录网络流量,建立正常流量的基线。这样,当突发请求发生时,可以更容易地识别出流量的异常变化。 实时流量监控:使用流量分析工具实时监控网络流量,快速…...
网络安全之IP伪造
眼下非常多站点的涉及存在一些安全漏洞,黑客easy使用ip伪造、session劫持、xss攻击、session注入等手段危害站点安全。在纪录片《互联网之子》(建议搞IT的都要看下)中。亚伦斯沃茨(真实人物,神一般的存在)涉…...
算法笔记:力扣24. 两两交换链表中的节点
思路: 本题最简单的就是通过递归的形式去实现 class Solution {public ListNode swapPairs(ListNode head) {if(head null || head.next null){return head;}ListNode next head.next;head.next swapPairs(next.next);next.next head;return next;} } 对于链…...
Shell脚本小练习
学习了这么长时间Shell脚本,总得来一次小小的练习吧,那么请看下文! 1.用Shell写一个小计算器。 通过read命令获取用户输入的表达式,表达式的格式设定为操作数1 运算符 操作数2,例如53,然后利用设计的脚本…...
Fastify装饰器:增强你的路由处理功能加入日志
Fastify以其出色的性能和扩展性脱颖而出。装饰器是Fastify提供的一个强大功能,它允许开发者在不修改核心代码的情况下,向请求(Request)和响应(Response)对象添加自定义属性和方法。本文将通过一个简单的示例…...
node.js基础学习-url模块-url地址处理(二)
前言 前面我们创建了一个HTTP服务器,如果只是简单的http://localhost:3000/about这种链接我们是可以处理的,但是实际运用中一般链接都会带参数,这样的话如果我们只是简单的判断链接来分配数据,就会报404找不到链接。为了解决这个问…...
Vue如何加载十万条数据
加载十万条数据到 Vue 应用中是一个相对复杂的问题,主要因为渲染大量数据可能会导致性能瓶颈,尤其是在前端性能较低的设备上。为了确保加载大量数据时,页面不会卡顿或崩溃,我们通常采取一些优化手段,以下是几种常用的方…...
重生之我在异世界学编程之C语言:二维数组篇
大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一 二维数组的创建1. 二维数组的…...
linux——进程间通信及管道的应用场景
linux进程的控制-CSDN博客 liunx——进程间通信(管道通信)-CSDN博客 文章目录 文章目录 前言 二、管道的应用 1.创建子进程 1、描述: 2.创建进程及管理 3、子进程接受任务 4、控制子进程 总结 前言 上篇博客我们学习了进程间通信&…...
深度学习基础3
目录 1.过拟合与欠拟合 1.1 过拟合 1.2 欠拟合 1.2 解决欠拟合 1.2.1 L2正则化 1.2.2 L1正则化 1.2.3 Dropout 1.2.4 简化模型 1.2.5 数据增强 1.2.6 早停 1.2.7 模型集成 1.2.8 交叉验证 2.批量标准化 2.1 实现过程 2.1.1 计算均值和方差 2.1.2 标准化 2.1.3…...
靶机dpwwn-01
靶机下载地址:https://download.vulnhub.com/dpwwn/dpwwn-01.zip 信息收集 扫描靶机的IP地址 arp-scan -l 获得靶机的IP地址:192.168.200.130 查看靶机的服务类型,端口信息 nmap -sS -sV -T4 -A -p- 192.168.200.130 开启了22…...
Python毕业设计选题:基于django+vue的智慧社区可视化平台的设计与实现+spider
开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 养老机构管理 业主管理 社区安防管理 社区设施管理 车位…...
大语言模型微调与 XTuner 微调实战
1 大语言模型微调 1.1 什么是微调 大语言模型微调(Fine-tuning of Large Language Models)是指在预训练的大型语言模型基础上,使用特定任务的数据进一步训练模型,以使其更好地适应和执行特定任务的过程,用于使LLM&am…...
数据结构-查找(四)总结与对比
查找算法总结 文章目录 查找算法总结一、查找的基本概念二、顺序查找法适用场景 三、分块查找法适用场景 四、折半查找法(Binary Search)适用场景 五、树型查找1. 二叉搜索树(BST)2. 平衡二叉树(AVL)3. 红黑…...
c++总复习
一、什么是 C 中的函数对象?它有什么特点? 在 C 中,函数对象(Function Object)也称为仿函数(Functor),它是一个类的实例,该类重载了函数调用运算符(),使得这个…...
AJAX一、axios使用,url组成(协议,域名,资源路径)查询参数和化简,错误处理,请求/响应报文,状态码,接口文档,
一、AJAX是什么 概念 : AJAX是一种与服务器(后端)通信的技术 二、请求库axios的基本用法 1导包 2使用 // 1. 发请求 axios({ url: 请求地址 }).then(res > { // 2.接收并使用数据 }) <body><p class"province"…...
Python学习笔记
MJ大神的Python课,课堂笔记 int 和float运算结果是 float除法(/)的结果是float整除(//),向下取整(floor)int 和 int 进行整除(//),得到的结果是int 绘制一个填充色边框色 import …...
开源 - Ideal库 - Excel帮助类,TableHelper实现(三)
书接上回,我们今天继续讲解实现对象集合与DataTable的相互转换。 01、把表格转换为对象集合 该方法是将表格的列名称作为类的属性名,将表格的行数据转为类的对象。从而实现表格转换为对象集合。同时我们约定如果类的属性设置了DescriptionAttribute特性…...
ceph手动部署
ceph手动部署 一、 节点规划 主机名IP地址角色ceph01.example.com172.18.0.10/24mon、mgr、osd、mds、rgwceph02.example.com172.18.0.20/24mon、mgr、osd、mds、rgwceph03.example.com172.18.0.30/24mon、mgr、osd、mds、rgw 操作系统版本: Rocky Linux release …...
macOS 开发环境配置与应用开发指南
macOS 开发环境配置与应用开发指南 macOS作为苹果公司推出的操作系统,因其稳定性、优雅的用户界面和强大的开发支持,已成为开发者和创意专业人士的首选平台之一。无论是开发iOS、macOS桌面应用,还是Web应用、跨平台程序,macOS都提…...
自动化是语法,智能化是语义与语用
自动化与智能化可以从语言学的角度来进行类比和探讨。 1. 自动化是语法 自动化可以类比为“语法”的部分,因为它关注的是操作过程的规则、结构和执行方式。语法是语言中关于词汇、句子结构和规则的系统,它提供了语言运作的框架和规范。类似地,…...
基于DHCP,ACL的通信
该问题为华为的学习资料 1.首先把所有的PC机全部设置为DHCP 2.配置地址 3.ospf 4.dhcp 5.acl AR1 dhcp en interface GigabitEthernet0/0/0ip address 192.168.1.254 255.255.255.0 dhcp select global interface GigabitEthernet0/0/1ip address 10.1.12.1 255.255.255.…...
Unity跨平台基本原理
Unity跨平台基本原理 Unity跨平台基本原理微软的.Net是什么微软做 .Net平台的目的如何实现的.Net跨语言?总结 .Net Framework.Net Framework的体系结构CLR总结 如何实现的跨平台?.Net Core.Net FrameWork 到 .Net CoreMonoMono如何实现跨平台总结如何实现…...
基于 Python、OpenCV 和 PyQt5 的人脸识别上课打卡系统
大家好,我是Java徐师兄,今天为大家带来的是基于 Python、OpenCV 和 PyQt5 的人脸识别上课签到系统。该系统采用 Python 语言开发,开发过程中采用了OpenCV框架,Sqlite db 作为数据库,系统功能完善 ,实用性强…...
IDEA的简易安装思路
IDEA(本身就是Java开发的):是目前为止开发Java效率最高的工具,但正版收费……(eclipse的话不好说,反正还是随主流吧) 使用IDEA的前提:必须先安装JDK【否则直接使用IDEA工具来运行程序是无效的,它…...
【实战】在Koa.js中实现文件上传的接口 (本地存储)
目录 环境准备 使用 koa-body 中间件获取上传的文件 使用 Postman 测试 使用 koa-static 中间件生成图片链接 编写前端页面上传文件 文件上传是一个基本的功能,每个系统几乎都会有,比如上传图片、上传Excel等。那么在Node Koa应用中如何实现一个支持…...
flink学习(10)——allowedLateness/测道输出
allowedLateness(lateness: Time) 水印:短期延迟,达到条件后触发计算并且关闭窗口(触发关闭同时进行) 水印allowedLateness : 短期延迟 等待长期延迟效果 1、达到水印条件后,会触发窗口计算,但是不关闭窗口…...
微信小程序按字母顺序渲染城市 功能实现详细讲解
在微信小程序功能搭建中,按字母渲染城市会用到多个ES6的方法,如reduce,map,Object.entries(),Object.keys() ,需要组合熟练掌握,才能优雅的处理数据完成渲染。 目录 一、数据分析 二、数据处理 …...
openjdk17 jvm 对象 内存溢出 在C++源码体现
##java大对象类 public class MiBigObject {private String f1;private String f2;private String f3;private String f4;private String f5;private String f6;private String f7;private String f8;private String f9;private String f10;private String f11;private String…...
【软考速通笔记】系统架构设计师⑧——系统质量属性与架构评估
文章目录 一、前言二、软件系统质量属性2.1 开发期质量属性2.2 运行期质量属性 三、质量属性场景描述四、系统架构评估方法4.1 方法分类4.2 软件架构分析方法4.3 架构权衡分析法4.4 成本效益分析法 一、前言 笔记目录大纲请查阅:【软考速通笔记】系统架构设计师——…...
YOLO系列论文综述(从YOLOv1到YOLOv11)【第5篇:YOLOv3——多尺度预测】
YOLOv3 1 摘要2 YOLOv32.1 相对于v2的改进2.2 网络架构2.3 多尺度预测2.4 YOLOv3结果 YOLO系列博文: 【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】【第2篇:YOLO系列论文、代码和主要优缺点汇总】【第3篇:YOLOv…...
HarmonyOS4+NEXT星河版入门与项目实战(25)------UIAbility启动模式(文档编辑案例)
文章目录 1、启动模式2、Specified启动模式实现步骤3、文档编辑案例1、文件创建2代码实现3、Statge 创建4、添加配置1、启动模式 Singleton启动模式: 每个 UIAbility 只存在一个实例,是默认的启动模式,任务列表中只会存在一个相同的 UIAbilityStandard启动模式: 每次启动 U…...
PyTorch张量运算与自动微分
PyTorch张量运算与自动微分 PyTorch由Facebook人工智能研究院于2017年推出,具有强大的GPU加速张量计算功能,并且能够自动进行微分计算,从而可以使用基于梯度的方法对模型参数进行优化,大部分研究人员、公司机构、数据比赛都使用P…...
在 Ubuntu 20.04 上使用 Lux 下载 Bilibili 视频的详细教程
在 Ubuntu 20.04 上使用 Lux 下载 Bilibili 视频的详细教程 在 Ubuntu 20.04 上使用 Lux 下载 Bilibili(哔哩哔哩)视频的完整和详细步骤如下,包括使用预编译二进制文件的安装方法: 1. 安装依赖 确保你的系统已安装 FFmpeg&…...
1.1 数据结构的基本概念
1.1.1 基本概念和术语 一、数据、数据对象、数据元素和数据项的概念和关系 数据:是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。 数据是计算机程序加工的原料。 数据对象:是具有相同性质的数据元素的集合&…...
【NebulaGraph】深入了解查询语句(二)
【NebulaGraph】深入了解查询语句 1. NebulaGraph 查询语句概述 1. NebulaGraph 查询语句概述 文档:https://docs.nebula-graph.com.cn/3.8.0/3.ngql-guide/7.general-query-statements/1.general-query-statements-overview/ NebulaGraph 的数据以点和边的形式存…...
Oracle—系统包使用
文章目录 系统包dbms_redefinition 系统包 dbms_redefinition 功能介绍:该包体可以实现将Oracle库下的表在线改为分区结构或者重新定义; 说明:在检查表是否可以重定义和开始重定义的过程中,按照表是否存在主键,参数 o…...
org.apache.commons.lang3包下的StringUtils工具类的使用
前言 相信平时在写项目的时候,一定使用到StringUtils.isEmpty();StringUtils.isBlank();但是你真的了解他们吗? 也许你两个都不知道,也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外,并不知道还有isAnyEmpty/isNon…...
详细介绍Node.js的中间件及使用方法
在Node.js的生态中,中间件(Middleware)是一个不可或缺的概念,它为构建灵活而高效的应用程序提供了强大的支持。以下是对Node.js中间件的详细介绍: 中间件的概念与定义 中间件是一种软件架构的设计模式,用…...
VPC9527同步整流控制器,相对最大电压检测与强力自供电,与MP6908完全PIN TO PIN
VPC9527 是一款高性能的同步整流控制器,它兼容 CCM 和 DCM 两种模式,最大工作频率高达 700kHz;可 通过 SEL 引脚的逻辑电压来选择 400nS 或 800nS 两个关断检测的屏蔽时间;可通过 VLC 引脚来调整限压导通的 参数,以便与所选同步整流管的参数相匹配,获得适应的最优性能;它…...
【聚类】主成分分析 和 t-SNE 降维
1 主成分分析PCA PCA 是一种线性降维技术,旨在通过选择具有最大方差的特征方向(称为主成分)来压缩数据,同时尽可能减少信息损失。 1.1 原理 1.2 优缺点 from sklearn.decomposition import PCA import matplotlib.pyplot as plt…...
MyBatis框架-日志配置
MyBatis框架的日志配置 MyBatis作为一个封装好的ORM框架,其运行过程我们没有办法跟踪,为了让开发者MyBatis执行流程及执行步骤所完成的工作,MyBatis框架本身支持log4j日志框架,对运行的过程进行跟踪记录。我们只需对MyBatis进行相…...
【数据结构】哈希 ---万字详解
unordered系列关联式容器 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到log_2 N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好 的查询是,…...
Python Web 框架
Python 有多个强大的 Web 框架,每个框架都具有不同的特点和应用场景。根据开发者的需求(如开发速度、灵活性、功能等),可以选择适合的框架。以下是一些常见的 Python Web 框架: 1. Django 简介:Django 是一…...