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

Linux学习——文本处理工具与正则表达式

目录

一,grep

1,grep介绍

2,grep的常用选项

3,grep使用演示

1,基本使用

 直接查找字符串:

使用选项

2,使用正则表达式进行匹配

1,正则表达式介绍

2,使用范例

二,sed

1,sed介绍

2,sed常用选项和指令

3,sed使用实例

1,简单实例

2,综合实例

三,Find

1,find介绍

2,常用选项

 ​编辑


一,grep

1,grep介绍

grep是Linux上的一个文本搜索工具,是用来查找文本文件内的一些符合grep定义模式的文本文件的。格式:grep [OPTIONS...] PATTERN [FILE...]

2,grep的常用选项

3,grep使用演示

1,基本使用
 直接查找字符串:

grep "字符串" 文件

使用选项

只显示第一行

grep "字符串" -m 1 文件

查找并显示行号

grep "字符串" -n 文件

只显示查找到的字符串

grep -o "字符" 文件

剔除查找的内容后显示别的内容

grep -v "字符" 文件

使用多个条件查找字符:满足两个条件之一便可以查找

grep -e "字符" -e  "字符"

显示匹配到字符条件的行的行号

grep -c 字符 文件

 递归条件搜索

1,不管软连接文件

grep -r 字符  文件

2,管软连接

 grep -R 字符 文件

不区分大小写

grep -i 字符串  文件

 从文件中读取pattern再匹配

先创建文件:

使用-f选项读取文件的pattern内容进行匹配:

2,使用正则表达式进行匹配
1,正则表达式介绍

正则表达式的使用方式可以再网上查询,也可以使用man 7 regex再Linux上查看。

2,使用范例
分区利用率最大的值
 
df | grep "^/dev/sd"|tr -s " " |cut -d% -f1|cut -d " " -f5|head -1

指令解释:

df:显示显示文件系统资源的信息。

grep "^/dev/sd":将df里面以/dev/sd开头的内容截取出来。

tr -s " ":将重复的空格去掉仅保留一个空格。

cut -d% -f1:以%为分隔符分为左右两边,取-f1表示左边。

 cut -d " " -f5:以" "为分隔符取第五个。

 head -1:只要最上面的第一行。

哪个IP和当前主机连接数最多
ss -nt |grep "^ESTAB"|tr -s " "|cut -d " " -f5|cut -d : -f1

指令解释:

  1. ss -nt

    • ss 是一个用于检查套接字的工具,它可以显示类似于 netstat 的信息,但比 netstat 更快。
    • -n 选项表示以数字形式显示地址和端口号,不尝试解析服务名称。
    • -t 选项指定只显示TCP连接。
  2. |(管道):这个符号用于将前一个命令的输出作为后一个命令的输入。

  3. grep "^ESTAB"

    • grep 是一个强大的文本搜索工具。
    • "^ESTAB" 是一个正则表达式,匹配以"ESTAB"开头的行。这里实际上是匹配"ESTABLISHED"状态的连接,但假设是为了简化而只写了"ESTAB"的一部分。然而,注意这样可能不准确匹配到所有ESTABLISHED状态的行,因为完整的状态通常是"ESTABLISHED"。正确的正则表达式应该是"^ESTABLISHED"
  4. tr -s " "

    • tr 是一个用于转换或删除字符的工具。
    • -s 选项表示压缩序列中的重复字符,但在这个命令中,它实际上对空格进行压缩,因为指定了" "(一个空格)作为要压缩的字符。然而,由于grep的输出通常不包含连续的空格,这个选项可能在这个具体命令中并不必要。
  5. cut -d " " -f5

    • cut 是一个用于按列提取文本的工具。
    • -d " " 指定空格作为字段分隔符。
    • -f5 表示提取第五个字段。在ss -nt的输出中,第五个字段通常是本地地址和端口(例如,192.168.1.1:80)。
  6. cut -d : -f1

    • 这个cut命令再次使用,但这次是以:作为字段分隔符。
    • -f1 表示提取第一个字段,即IP地址部分
连接状态的统计
ss -nat|grep -v "^State"|cut -d " " -f1|sort -u

指令解释:

ss -nat:将所有的tcp连接以数字的方式显示出来。

grep -v "^State":不显示以State开头的行。

cut -d " " -f1:以空格为分隔符并取第一列。

sort -u:排序并去掉重复的状态。

 过滤掉文件的注释(包括#号的行)和空行

 grep -v "^#|$" /etc/passwd

二,sed

1,sed介绍

sed也是一个文本处理工具,特点是可以一行一行的读取文件内容并处理。相比于vim等文本编辑器更加高效。

格式:sed [OPTION]... {script-only-if-no-other-script} [input-file]...

2,sed常用选项和指令

3,sed使用实例

1,简单实例

打印文件内容

sed 'p' 文件

仅显示与查找匹配的内容

sed -n '/字符串/p' 文件

只打印第一行的内容

sed -n '1p' 文件

sed给每一行后面加上空格

sed 'G' 文件

2,综合实例

删除每行的第二个字符

sed -r 's/(.)(.)(.*)/\1\3/' test.txt

代码解释:

-r:使用扩展模式

s:启用搜索功能

(.)(.)(.*):匹配的字符模式,每一个括号代表一个匹配组。

\1\3:代表显示第一个和第三个捕获组的内容。

删除第二个单词 

sed -r 's/^([a-zA-Z]+[^a-zA-Z]+)[a-zA-Z]/\1/' test.txt 

解释

  • sed -r:使用 sed 的扩展正则表达式模式。
  • 's/^([a-Z]+[^a-Z]+)[a-Z]+/\1/g':这是一个替换命令,其结构为 s/pattern/replacement/flags
    • ^:匹配行的开始。
    • ([a-Z]+[^a-Z]+):这是一个捕获组,但其中的正则表达式可能不是您想要的。
      • [a-Z]+:匹配一个或多个字母(注意:[a-Z] 实际上可能不是所有 sed 实现都支持的,因为标准 ASCII 字符集中没有 Z 到 a 的范围,但这里可能是想表达 [a-zA-Z] 的意思,即匹配任何大小写字母)。
      • [^a-Z]+:紧接着尝试匹配一个或多个非字母字符,但由于前面的 [a-Z]+ 已经消耗了尽可能多的字母,这个部分可能永远不会被匹配到(除非输入字符串以非字母字符开头,但这与 ^ 冲突)。
    • [a-Z]+:这部分尝试匹配行中紧接着前面部分的又一个或多个字母,但由于前面的正则表达式可能存在的问题,这部分的匹配也可能不是你预期的。
    • \1:在替换文本中,\1 引用第一个捕获组的内容。

三,Find

1,find介绍

find是一个文件搜索工具,可以实时的查找文件。

2,常用选项

 

在使用find时可以指定文件路径进行查找。

指定在根目录下查找 :

sudo find /  -name passwd

相关文章:

Linux学习——文本处理工具与正则表达式

目录 一,grep 1,grep介绍 2,grep的常用选项 3,grep使用演示 1,基本使用 直接查找字符串: 使用选项 2,使用正则表达式进行匹配 1,正则表达式介绍 2,使用范例 二&…...

大厂进阶四:React源码Fiber架构解析

本文主要内容: 1、React Concurrent 2、React15架构 3、React16架构 4、Fiber架构 5、任务调度循环和fiber构造循环区别 一、React Concurrent React在解决CPU卡顿是会用到React Concurrent的概念,它是React中的一个重要特性和模块,主要的…...

MongoDB的WiredTiger存储引擎

作者:太阳 从MongoDB 3.2 开始,MongoDB实例默认的存储引擎为WiredTiger,WiredTiger存储引擎具体以下几大优点: 文档级并发 将数据持久化到磁盘 快照和checkpoint 数据压缩 本地数据加密 一、文档级别并发 1、WiredTiger使…...

windows 版本Jenkins的Jenkinsfile中共享变量

场景 jenkins部署在windows服务器上的,需要在Jenkinsfile中获取命令执行的结果存入一个变量,然后在后续的执行中使用此变量 一开始想的是定义一个环境变量,如下所示, pipeline {agent anystages {stage(test) {steps {bat for /…...

Android-->产物收集(含apk文件重命名, aab文件重命名)

以前写过修改apk生成路径和文件名的文章, 如下: AS–›Gradle 7.0.0/4.1.0/4.0/3.3/3.0 修改APK生成路径和文件名(附AAR修改方式以及分析过程)_com.android.build.gradle.internal.api.libraryvaria-CSDN博客 这种方法入侵了gradle,破坏了原有的gradle环境, 经常会导致如下问…...

matlab实现迷宫最佳路径规划

在MATLAB中实现迷宫路径的最佳路径规划,我们可以使用多种算法,其中最常见和高效的是A搜索算法(A Search Algorithm)。A*算法结合了最佳优先搜索和Dijkstra算法的优点,通过启发式函数来评估每个节点的优先级&#xff0c…...

【自用】Python爬虫学习(二):网页解析的三种方式(re、bs4、xpath)

Python爬虫学习(二) 网页解析的三种方式1.正则表达式-re解析常用表达:re常用函数:在html中的运用: 2.BeautifulSoup解析常用语法:用法举例: 3.xpath解析示例代码1:示例代码2&#xf…...

从零到一:家政保洁小程序搭建全攻略与功能作用深度解析

目录 一、家政保洁小程序主要功能 二、家政保洁小程序搭建教程 (一)前期准备 (二)注册与选择工具 (三)设计与开发 (四)测试与优化 (五)发布与推广 一、…...

单元测试:为工程质量保驾护航

单元测试 单元测试是软件开发过程中确保代码质量和正确性的关键手段。它指的是对软件中的最小可测试单元(通常是函数或方法)进行验证,确保其行为符合预期。 基本概念 单元测试:验证软件中最小单元(通常是函数或方法…...

江协科技STM32学习笔记

第01章 STM32简介及开发环境搭建 1.1 STM32简介 1.1.1 STM32F103C8T6 系列:主流系列STM32F1 内核:ARM Cortex-M3 主频:72MHz RAM:20K(SRAM) ROM:64K(Flash) 供电…...

RabbitMQ再回首--往事如梦

这文章你就读吧,越读越🥸,一读一个不吱声 可靠的🐰警官:rabbitMQ,功能全面,不丢数据,体量小,容易堆积 声明exchange channel . exchangeDeclare ( String exchange , …...

头狼择校小程序

综述介绍 头狼择校,是头狼择™高校的简称,我们专注高校、大学的择校。倡导先嗅就业再择校,是预约工具和对话平台。帮您嗅招办、嗅教授、嗅学姐,预约择校有关的老师、顾问,助力考大学和考研的“双考”学生及家长了解就…...

【Electron】npm安装Electron项目失败报错问题和解决办法

前言 闲来无事,便想着研究一下Electron,没想到安装直接就卡住了 问题 npm ERR! RequestError: Hostname/IP does not match certificates altnames: Host: npm.taobao.org. is not in the certs altnames: DNS:*.tbcdn.cn, DNS:*.taobao.com, DNS:*.al…...

人工智能提示(prompt)工程入门

文章目录 人工智能提示(prompt)工程入门一、目的二、使用1、角色2、提示3、上下文4、例子5、输入6、输出 三、使用示例 人工智能提示(prompt)工程入门 一、目的 对于当前的发达的人工智能,我们可以广泛使用&#xff0…...

【机器学习的基本思想】模型优化与评估

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…...

公司电脑监控软件推荐(一口气了解8款!)一起领略电脑监控界的刀光剑影!

企业的内部管理的需求日益复杂,电脑监控软件作为提升工作效率、保障数据安全的重要工具,其重要性不言而喻。今天,我们将带您一口气了解8款顶尖的公司电脑监控软件,包括国内知名的“安企神”以及多款来自海外的优秀产品&#xff0c…...

设备图纸资料管理系统:数字化转型下的高效协同与安全管理新篇章

在当今高度信息化的时代,设备图纸资料管理系统作为企业资产与知识管理的重要一环,正日益凸显其不可或缺的价值。这一系统集成了先进的数字化技术与管理理念,旨在实现设备图纸资料的高效存储、快速检索、安全共享及版本控制,为企业…...

ArcGIS基础:标注转注记及简单处理

注记是一个静态的标签图层,能够独立的保存为文件,并且具有计算功能; 标注是一个动态的标签图形,无法以文件的形式进行存储和计算; 2者各有优势和劣势,根据具体需求进行选择 需要注意的是注记要存储在GDB…...

jQuery实现图片轮播效果

实现图片轮播效果,打开页面,每隔3秒切换至下一张图片;光标移入数字时,播放相应图片。 思路: (1)获取需要轮播的图片和展示的div。 (2)使用animate设置left值&#xff…...

关于天地图新手使用

1分钟带你了解学习天地图 适用新手 天地图API (tianditu.gov.cn) 文档api 先去注册key 把脚本放到index.html文件里面 <!-- 天地图的官网申请的tk --> <script src="http://api.tianditu.gov.cn/api?v=4.0&tk=申请的key" type="text/javascr…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...