处理文本内容的命令和正则表达式

处理文本内容的命令

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

文本三剑客:

grep 过滤文本内容

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

awk 按行取列

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

grep

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

选项:

-m 匹配几次之后停止

[root@localhost opt]# grep -m 1 root /etc/passwd
root:x:0:0:root:/root:/bin/bash

-v 取反

[root@localhost opt]# cat /opt/123.txt 
qwe
123
aaa
bbb
ccc
[root@localhost opt]# grep -v 123 /opt//123.txt 
qwe
aaa
bbb
ccc

-n 显示匹配的行号

[root@localhost 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@localhost opt]# grep -c root /etc/passwd
2

-o 仅显示匹配的结果

[root@localhost opt]# grep -o root /etc/passwd
root
root
root
root

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

[root@localhost opt]# grep -q root /etc/passwd
[root@localhost opt]# 

-A 数字 后几行

[root@localhost opt]# grep -A 3 root /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

-B 数字 前几行

-C 数字 前后各几行

-e 或者

-E 匹配扩展正则表达式

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

[root@localhost opt]# vim 123.txt
qwe 123 aaa bbb ccc
[root@localhost opt]# vim 456.txt
123 qwe ddd ccc
[root@localhost opt]# grep -f 123.txt 456.txt 
123
qwe
ccc

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

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

[root@localhost opt]# grep -r qwe /opt
/opt/dec/123.txt:qwe
/opt/123.txt:qwe
/opt/456.txt:qwe
[root@localhost opt]# grep -R qwe /opt
/opt/dec/123.txt:qwe
/opt/123.txt:qwe
/opt/999.txt:qwe
/opt/456.txt:qwe

排序:

sort

sort

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

sort 选项 参数

cat file | sort 选项

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

-b 忽略每行之前的空格

-n 按照数字进行排序

-r 反向排序

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

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

uniq

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

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

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

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

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

tr 选项 参数

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

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

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

cut

cut和awk 都可以按行取列。

cut 快速裁剪

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

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

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

-output-delimiter 更改输出内容的分割符

[root@localhost ~]# head -n 1 /etc/passwd | cut -d ':' -f 1-5 --output-delimiter=' '
root x 0 0 root

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

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

文件的拆分:split

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

-l 按行来进行分割

-b 按照大小来进行分割

面试题:

现在有一个日志文件,很大,5G,第一个能不能快速的打开?

第一个方法:拆分 -l 按行 -b 大小

这种文件推荐使用按大小。

文件合并:

cat

paste

面试题:

cat合并和paste合并之间有什么区别

cat是上下合并

paste是左右合并

面试题:

统计当前主机的连接状态:

[root@localhost opt]# ss -antp | grep -v '^State' | cut -d ' ' -f 1 |  sort | uniq -c
      1 ESTAB
     13 LISTEN

正则表达式:

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

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

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

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

正则表达式:

基本正则表达式:

元字符(字符匹配)

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

\ 转义符 恢复其本意

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

[^] 取反

^# 以#为开头

^$ 表示空行

匹配字符出现的次数:

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

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

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

\+ 匹配前面的字符只少出现一次

\{n\} 匹配前面的字符=n次,可以小于n,但是不能大于n,而且前面的字符必须要是连续出现

\{m,n\}匹配前面的字符至少m次,至多n次。必须是连续出现,超出的不在匹配范围。

位置锚定:

^:以什么为开头,行首锚定

$:以什么为结尾,行尾锚定

[root@localhost opt]# cat -n test1.txt 
     1  13770325194
     2  13131301010
     3  111111111111
     4  aaacvvaada
     5  rootroot
     6  root
     7  rootrootroot
[root@localhost opt]# cat test1.txt | grep -n "^root$"     #这一行只能有root
6:root

\< 或者 \b 词首锚定,匹配单词的左侧(连续的数字,字母。下划线都算单词内部)

\> 或者 \b 词尾锚定 用于匹配单词的右侧

\broot\b 匹配整个单词。空格隔开的也算整个单词

^root$ 整行只有这一个单词

区别

分组和逻辑关系

分组()

或者 \|

扩展正则表达式:

grep -E

元字符(字符匹配)

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

\ 转义符 恢复其本意

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

[^] 取反

^# 以#为开头

^$ 表示空行

匹配字符出现的次数:

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

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

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

* 匹配前面的字符只少出现一次

{n} 匹配前面的字符=n次,可以小于n,但是不能大于n,而且前面的字符必须要是连续出现

{m,n}匹配前面的字符至少m次,至多n次。必须是连续出现,超出的不在匹配范围。

位置锚定:

^:以什么为开头,行首锚定

$:以什么为结尾,行尾锚定

[root@localhost opt]# cat -n test1.txt 
     1  13770325194
     2  13131301010
     3  111111111111
     4  aaacvvaada
     5  rootroot
     6  root
     7  rootrootroot
[root@localhost opt]# cat test1.txt | grep -n "^root$"     #这一行只能有root
6:root

\< 或者 \b 词首锚定,匹配单词的左侧(连续的数字,字母。下划线都算单词内部)

\> 或者 \b 词尾锚定 用于匹配单词的右侧

\broot\b 匹配整个单词。空格隔开的也算整个单词

^root$ 整行只有这一个单词

区别

分组和逻辑关系

分组()

或者 |

grep -E

egrep

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/728100.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

码蹄集 BD202401 补给

错误解法&#xff1a;简单将取半前后的综合排序后取最小值&#xff0c;这样没有考虑这样一种情况&#xff1a;取半的时机不对&#xff0c;也许取半某个大一点的P之后反而能进一步取一个补给点了呢&#xff1f;&#xff1f;对不对。这样简单排序只不过是“最省钱”的一种&#x…

C# 数据结构与算法:近邻算法的详解

文章目录 1、什么是K最近邻算法&#xff08;KNN&#xff09;&#xff1f;2、 KNN算法的原理3、实现近邻算法算法使用示例 4、应用&#xff1a;使用KNN算法进行简单的分类5、算法的优势与不足6、总结 近邻算法是一种基于实例的学习方法&#xff0c;它通过找到与给定测试点最接近…

镭速传输界面优化之静态文件加载

镭速一直是众多企业传输大文件和大数据的优选对象&#xff0c;速度快、稳定且安全是市场上传输软件脱颖而出的立杆标签&#xff0c;那么同样在界面优化和体验的强大也能够给企业用户带来许多直观的感受&#xff0c;那么今天我们就来谈谈镭速是如何做到这些的&#xff0c;在界面…

卷积篇 | YOLOv8改进之引入重新参数化再聚焦卷积RefConv | 即插即用

前言:Hello大家好,我是小哥谈。论文提出了重新参数化再聚焦卷积RefConv作为常规卷积层的替代品,它是一个即插即用模块,可以在没有任何推理成本的情况下提高性能。具体来说,在给定预训练模型的情况下,RefConv对从预训练模型继承的基核进行可训练的再聚焦变换,以建立参数之…

qt笔记之main.cpp加载qml文件的3种方法QQuickView 、QQmlApplicationEngine、QQuickWidget

qt笔记之main.cpp加载qml文件的3种方法QQuickView 、QQmlApplicationEngine、QQuickWidget —— 2024-06-16 下午 code review! 文章目录 qt笔记之main.cpp加载qml文件的3种方法QQuickView 、QQmlApplicationEngine、QQuickWidget1.使用qtcreator创建qml空项目&#xff0c;默…

【python】Sklearn—Cluster

参考学习来自 10种聚类算法的完整python操作示例 文章目录 聚类数据集亲和力传播——AffinityPropagation聚合聚类——AgglomerationClusteringBIRCH——Birch&#xff08;✔&#xff09;DBSCAN——DBSCANK均值——KMeansMini-Batch K-均值——MiniBatchKMeans均值漂移聚类——…

来都来了,8个JavaScript技巧奉上

吆喝一声&#xff0c;如果你计算机、软件工程、电子等相关专业本科及以上学历&#xff0c;欢迎来共事。前后端/测试可投&#xff0c;技术大厂。 JavaScript 作为最流行的语言之一&#xff0c;其语法灵活且每年都在不断吸纳新特性&#xff0c;即使是一个从业多年的老手&#xff…

Hydra常用爆破命令

常用破解命令 SSH 破解 hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip ssh hydra -l 用户名 -p 密码字典 -t 线程 -o save.log -vV ip sshFTP 破解 hydra ftp://ip -l 用户名 -P 密码字典 -t 线程(默认16) -vV hydra ftp://ip -l 用户名 -P 密码字典 -e ns -vVWeb 登陆…

《深入理解Spark RDD缓存机制》(第4天)

文章目录 前言一、小试牛刀&#xff1a;解剖RDD缓存机制&#xff1f;1. 什么是Spark RDD缓存策略1.1 为什幺RDD要做缓存1.2 缓存相关API&#xff1a;1.3 缓存案例解析:1.4 图解缓存效果: 2. 什么是checkpoint缓存2.1 为什么要做checkpoint缓存2.2 checkpoint相关API:2.3 checkp…

爬取CSDN博文到本地(包含图片,标签等信息)

文章目录 csdnToMD改进将CSDN文章转化为Markdown文档那有什么办法快速得到md文档&#xff1f;例如&#xff1a;获取单个文章markdown获取所有的文章markdown 项目中待解决的问题 csdnToMD 项目原作者&#xff1a;https://gitee.com/liushili888/csdn-is—mark-down 改进后仓库…

Linux-账号和权限管理

目录 一、管理用户账号 1、用户账号类型 2、UID--身份标识 3、UID的分类 ​4、用户账号文件​ 5、chage-修改账号密码 5.1、chage—使用格式&#xff1a; 5.2、chage—使用参数&#xff1a; ​6、添加用户账号与管理 6.1、useradd—添加用户 6.2、passwd—设置/修改…

(创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据

目录 一、主要内容&#xff1a; 二、运行效果&#xff1a; 三、VMD-BiLSTM负荷预测理论&#xff1a; 四、代码数据下载&#xff1a; 一、主要内容&#xff1a; 本代码结合变分模态分解( Variational Mode Decomposition&#xff0c;VMD) 和卷积神经网络(Convolutional neu…

【0基础学爬虫】爬虫基础之自动化工具 Appium 的使用

大数据时代&#xff0c;各行各业对数据采集的需求日益增多&#xff0c;网络爬虫的运用也更为广泛&#xff0c;越来越多的人开始学习网络爬虫这项技术&#xff0c;K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章&#xff0c;为实现从易到难全方位覆盖&#xff0c;特设【0基础学…

目标检测——SCUT-HEAD:大规模人头检测数据集的深度剖析

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 在…

Python学习打卡:day11

day11 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 目录 day1183、自定义 Python 包创建包导入包方式1方式2方式3方式4 84、安装第三方包安装第三方包——pippip的网络优化 安装第三方包——PyCharm 85、…

小林图解系统-三、操作系统结构

Linux 内核 vs Windows 内核 内核 作为应用连接硬件设备的桥梁&#xff0c;保证应用程序只需要关心与内核交互&#xff0c;不需要关心硬件的细节 内核具备四个基本能力&#xff1a; 管理进程、线程&#xff0c;决定哪个进程、线程使用CPU&#xff0c;也就是进程调度的能力&a…

openh264 帧级码率控制原理:RcCalculateIdrQp 函数

RcCalculateIdrQp函数 功能 在码控中&#xff0c;当eSliceType为I_SLICE时 计算 IDR 帧的帧级量化参数QP 值。 原理过程 初始化变量&#xff1a; dBpp&#xff1a;初始化为0&#xff0c;用来存储比特率每像素&#xff08;bits per pixel&#xff09;的值。i&#xff1a;一个…

nginx的正向代理

目录 1 正向代理 1.1 使用正向代理的作用 1.2 Nginx正向代理实战 1.2.1 下载对应版本的nginx&#xff08;源码编译&#xff09; 1.2.2 下载 https 代理模块 1.2.3 使用https代理模块对源代码修改 1.2.4 源码安装 1.2.5 编写systemd 服务单元 1.2.6 修改nginx的主配置文件 1.2.…

虚拟现实环境下的远程教育和智能评估系统(十一)

视频帧画面知识点区域划分 知识点区域精确分割技术: 在深度学习检测模型结果基础上使用基于交并比&#xff08;IoU&#xff09;阈值的目标合并算法&#xff0c;合并过度重合目标区域面积&#xff0c;实现知识点区域精确分割 多模态知识点内容匹配策略: 图像&#xff1a;利用…

【人工智能,机器学习,统计学习,科学表征】开源商用与研发合作

个体工户linjing-lab托管在Github&#xff0c;现公开招募商用与合作人员&#xff0c;目标人群分为以下几个方向&#xff1a; 数学、信息科学、计算机专业的大学高年级学生&#xff0c;熟悉C和面向对象模型&#xff0c;擅长Pybind11编译算子到Python环境。26岁以下的大学本科毕…