当前位置: 首页 > 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…...

STM32与Arduino和ESP32对比分析

在嵌入式系统领域&#xff0c;STM32、Arduino 和 ESP32 是三种广泛使用的微控制器平台。它们各自具有独特的优势&#xff0c;适用于不同类型的项目。本文将详细比较这些平台&#xff0c;帮助您了解它们之间的差异、优势以及可能的应用场景。 一、架构与处理能力 STM32&#xf…...

125. 验证回文串【 力扣(LeetCode) 】

一、题目描述 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&#xff0c;如果它是 回文串 &#xff0c;返回 true &#xff1b…...

3年经验,面试测试岗20k都拿不到了吗?

我的情况 大概介绍一下个人情况&#xff0c;女&#xff0c;本科&#xff0c;三年多测试工作经验&#xff0c;懂python&#xff0c;会写脚本&#xff0c;会selenium&#xff0c;会性能&#xff0c;然而到今天都没有收到一份offer&#xff01;从年后就开始准备简历&#xff0c;年…...

【ML】强化学习(Reinforcement Learning)及其拆解

【ML】强化学习&#xff08;Reinforcement Learning&#xff09; 1. RL Outline 强化学习&#xff08;Reinforcement Learning&#xff09;概述1.1 RL的基本框架 2. RL 引入&#xff1a;从这个小游戏开始3. Policy Gradient 方法4. Actor-Critic 方法5. [奖励塑形&#xff08;R…...

在宝塔面板下安装WordPress

宝塔面板是服务器管理好助手&#xff0c;尤其在Linux系统下&#xff0c;提高了管理的可视化&#xff0c;降低了Linux服务器的使用门槛。 WordPress是个非常好的博客系统&#xff0c;由于支持海量主题模板、各种类型的插件&#xff0c;因此已经成为建设各类网站的首选框架。 今…...

纷享销客CRM AI产品架构概览、产品特色

一、纷享销客CRM AI产品架构概览 纷享AI平台架构分为三个主要层次&#xff1a;AI基础设施层、AI平台层和AI应用层。每个层次都由一系列功能模块组成&#xff0c;旨在为客户提供强大的技术支持和灵活的解决方案。 1.Al基础设施层 AI基础设施层是整个AI平台的底层支撑&#xff…...

【文件IO】文件系统操作

文章目录 基本操作概述1. 文件属性2. 文件构造方法3. 文件方法1. 文件创建2. 文件删除3. 查看目录下所有的文件名4. 遍历目录5. 创建目录5. 目录重命名 基本操作概述 创建文件删除文件创建目录重命名文件判定文件存在… Java 中&#xff0c;提供了一个 File 类&#xff0c;进…...

Spring Cloud Alibaba 集成分布式定时任务调度功能

作者&#xff1a;千习 背景简介 定时任务是指在约定的时间&#xff0c;或者按照固定频率周期性执行的任务。在企业应用中&#xff0c;非用户行为发起的后台业务&#xff0c;一般都是通过定时任务来实现&#xff0c;常见场景如下&#xff1a; 异步数据处理&#xff1a;比如先…...

中职云计算实训室

一、实训室建设背景 随着信息技术的飞速发展&#xff0c;云计算已成为推动数字化转型、促进经济社会发展的重要力量。《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》明确提出&#xff0c;要加快数字化发展&#xff0c;建设数字中国。云计算作为数…...

【python制作一个小程序作为七夕礼物】

制作一个七夕节礼物的小程序&#xff0c;我们可以考虑一个简单的互动程序&#xff0c;比如一个“七夕情侣姓名配对指数计算器”。这个程序将接收两个名字作为输入&#xff0c;然后输出一个随机的“配对指数”和一些浪漫的话语。以下是一个使用Python实现的简单示例&#xff1a;…...