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

news2024/12/26 20:14:39

文本内容处理命令

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Maven Helper】分析依赖冲突案例

目录 Maven Helper实际案例java文件pom.xml文件运行抛出异常分析 参考资料 《咏鹅》骆宾王 鹅&#xff0c;鹅&#xff0c;鹅&#xff0c;曲项向天歌。 白毛浮绿水&#xff0c;红掌拨清波。 骆宾王是在自己7岁的时候就写下了这首杂言 Maven Helper A must have plugin for wor…

Android 桌面窗口新功能推进,聊一聊 Android 桌面化的未来

Android 桌面化支持可以说是 Android 15 里被多次提及的 new features&#xff0c;例如在 Android 15 QPR1 Beta 2 里就提到为 Pixel 平板引入了桌面窗口支持&#xff0c;桌面窗口允许用户在自由窗口同时运行多个应用&#xff0c;同时可以像在传统 PC 平台上一样调整这些窗口的…

【深度学习】四大图像分类网络之VGGNet

2014年&#xff0c;牛津大学计算机视觉组&#xff08;Visual Geometry Group&#xff09;和Google DeepMind公司一起研发了新的卷积神经网络&#xff0c;并命名为VGGNet。VGGNet是比AlexNet更深的深度卷积神经网络&#xff0c;该模型获得了2014年ILSVRC竞赛的第二名&#xff0c…

Pytest框架学习20--conftest.py

conftest.py作用 正常情况下&#xff0c;如果多个py文件之间需要共享数据&#xff0c;如一个变量&#xff0c;或者调用一个方法 需要先在一个新文件中编写函数等&#xff0c;然后在使用的文件中导入&#xff0c;然后使用 pytest中定义个conftest.py来实现数据&#xff0c;参…

【力扣】389.找不同

问题描述 思路解析 只有小写字母&#xff0c;这种设计参数小的&#xff0c;直接桶排序我最开始的想法是使用两个不同的数组&#xff0c;分别存入他们单个字符转换后的值&#xff0c;然后比较是否相同。也确实通过了 看了题解后&#xff0c;发现可以优化&#xff0c;首先因为t相…

HarmonyOS4+NEXT星河版入门与项目实战(23)------组件转场动画

文章目录 1、控件图解2、案例实现1、代码实现2、代码解释3、实现效果4、总结1、控件图解 这里我们用一张完整的图来汇整 组件转场动画的用法格式、属性和事件,如下所示: 2、案例实现 这里我们对上一节小鱼游戏进行改造,让小鱼在游戏开始的时候增加一个转场动画,让小鱼自…

Wireshark常用功能使用说明

此处用于记录下本人所使用 wireshark 所可能用到的小技巧。Wireshark是一款强大的数据包分析工具&#xff0c;此处仅介绍常用功能。 Wireshark常用功能使用说明 1.相关介绍1.1.工具栏功能介绍1.1.1.时间戳/分组列表概况等设置 1.2.Windows抓包 2.wireshark过滤器规则2.1.wiresh…

Vue3 开源UI 框架推荐 (大全)

一 、前言 &#x1f4a5;这篇文章主要推荐了支持 Vue3 的开源 UI 框架&#xff0c;包括 web 端和移动端的多个框架&#xff0c;如 Element-Plus、Ant Design Vue 等 web 端框架&#xff0c;以及 Vant、NutUI 等移动端框架&#xff0c;并分别介绍了它们的特性和资源地址。&#…

探索Python词云库WordCloud的奥秘

文章目录 探索Python词云库WordCloud的奥秘1. 背景介绍&#xff1a;为何选择WordCloud&#xff1f;2. WordCloud库简介3. 安装WordCloud库4. 简单函数使用方法5. 应用场景示例6. 常见Bug及解决方案7. 总结 探索Python词云库WordCloud的奥秘 1. 背景介绍&#xff1a;为何选择Wo…

Kali Linux系统一键汉化中文版及基础使用详细教程

Kali Linux系统一键汉化中文版及基础使用详细教程 引言 Kali Linux是一款基于Debian的Linux发行版&#xff0c;专为渗透测试和网络安全而设计。由于其强大的功能和丰富的工具&#xff0c;Kali Linux在安全领域得到了广泛应用。然而&#xff0c;许多用户在使用Kali Linux时会遇…

网络安全(三):网路安全协议

网络安全协议设计的要求是实现协议过程中的认证性、机密性与不可否认性。网络安全协议涉及网络层、传输层与应用层。 1、网络层安全与IPSec协议、IPSec VPN 1.1、IPSec安全体系结构 IP协议本质上是不安全的额&#xff0c;伪造一个IP分组、篡改IP分组的内容、窥探传输中的IP分…

2. STM32_中断

中断 中断是什么&#xff1a; 打断CPU执行正常的程序&#xff0c;转而处理紧急程序&#xff0c;然后返回原暂停的程序继续运行&#xff0c;就叫中断。 中断的意义&#xff1a; 中断可以高效处理紧急程序&#xff0c;不会一直占用CPU资源。如实时控制、故障处理、处理不确定…

【聚类】主成分分析 和 t-SNE 降维

1 主成分分析PCA PCA 是一种线性降维技术&#xff0c;旨在通过选择具有最大方差的特征方向&#xff08;称为主成分&#xff09;来压缩数据&#xff0c;同时尽可能减少信息损失。 1.1 原理 1.2 优缺点 from sklearn.decomposition import PCA import matplotlib.pyplot as plt…

ARM 嵌入式处理器内核与架构深度剖析:解锁底层技术逻辑

目录 一、ARM架构概述 1.1. 优势与特点 1.2. 应用领域 二、ARM内核的主要系列及特点 2.1. ARM内核与架构的关系 2.2. Cortex-A系列 2.2.1. 应用场景 2.2.2. 特点 2.3. Cortex-R系列 2.3.1. 应用场景 2.3.2. 特点 2.4. Cortex-M系列 2.4.1. 应用场景 2.4.2. 特点 …

数据结构 (21)树、森林和二叉树的关系

一、树 定义&#xff1a;树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点&#xff0c;所定义的关系称为父子关系。当集合为空时&#xff0c;是一棵空树&#xff1b;当集合非空时&#xff0c;有且仅有一个特定的称为根的结点。树中的每个结点可以有…

探索温度计的数字化设计:一个可视化温度数据的Web图表案例

随着科技的发展&#xff0c;数据可视化在各个领域中的应用越来越广泛。在温度监控和展示方面&#xff0c;传统的温度计已逐渐被数字化温度计所取代。本文将介绍一个使用Echarts库创建的温度计Web图表&#xff0c;该图表通过动态数据可视化展示了温度值&#xff0c;并通过渐变色…

计算机网络——数据链路层Mac帧详解

目录 前言 一、以太网 二、Mac帧 三、MTU——最大传输单元 四、Mac帧的传输过程 1.ARP协议 2.RARP协议 前言 在之前&#xff0c;我们学习过网络层的IP协议&#xff0c;了解到IP协议解决了从哪里来&#xff0c;到哪里去的问题&#xff0c;也就是提供了将数据从A到B的能力…

LabVIEW将TXT文本转换为CSV格式(多行多列)

在LabVIEW中&#xff0c;将TXT格式的文本文件内容转换为Excel格式&#xff08;即CSV文件&#xff09;是一项常见的数据处理任务&#xff0c;适用于将以制表符、空格或其他分隔符分隔的数据格式化为可用于电子表格分析的形式。以下是将TXT文件转换为Excel&#xff08;CSV&#x…

响应式编程一、Reactor核心

目录 一、前置知识1、Lambda表达式2、函数式接口 Function3、StreamAPI4、Reactive-Stream1&#xff09;几个实际的问题2&#xff09;Reactive-Stream是什么&#xff1f;3&#xff09;核心接口4&#xff09;处理器 Processor5&#xff09;总结 二、Reactor核心1、Reactor1&…

Vue3之弹窗

文章目录 第一步、引入JS第二步、弹框 在前端开发语言Vue3&#xff0c;在管理端如何进行弹窗&#xff1f;下面根据API实现效果。 Element API文档&#xff1a; Element-plus文档 搭建环境可参考博客【 初探Vue3环境搭建与nvm使用】 第一步、引入JS <script lang"ts&…