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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

servlet的执行顺序

执行的时候Tomcat先初始化 然后调用 server 根据server来回调请求方式下面会追入源码解释 package com.haogu.servlet;import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.…

Zookeeper的在Ubuntu20.04上的集群部署

安装资源 官方安装包下载地址:https://zookeeper.apache.org/releases.html 懒得找版本的可以移步下载zookeeper3.84稳定版本: https://download.csdn.net/download/qq_43439214/89646735 安装方法 创建安装路径&&解压安装包 # 创建路径 m…

STM32总线和时钟树(速记版)

一、存储器结构 1.1 STM32内存结构 型号说明 以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下: ST 是公司名,意法半导体。M 代表Cortex-M内核。32 代表32位微控制器。 F103 是芯片系列。 R 代表引脚数…

Excel求和方法之

一 SUM(),选择要相加的数,回车即可 二 上面的方法还不够快。用下面这个 就成功了 三 还有一种一样快的 选中之后,按下Alt键和键(即Alt)

直流屏监控模块ACT-J04触摸屏ACT-J05控制器的应用

直流屏监控模块ACT-J04触摸屏ACT-J05控制器的应用,电力智能监控系统ACT-J03,ACT-J02,ACT-J06,高频开关电源模块M1B10,M1A10,M1B10L,M1B20,M1B10L-2,MK1B10L,M…

Hive:大数据时代的SQL魔法师

时间:2024年08月17日 作者:小蒋聊技术 邮箱:wei_wei10163.com 微信:wei_wei10 音频地址:https://xima.tv/1_ZRh54d?_sonic0 希望大家帮个忙!如果大家有工作机会,希望帮小蒋内推一下&#x…

Rust学习笔记1--下载安装和使用

一、下载和安装: 官网:https://www.rust-lang.org/ 直接下载即可,windows:按照教程执行步骤。 二、使用: 2.1 在vscode中安装rust 2.2 编译与运行rust文件: 后缀名rs: 编译: …

Eureka原理与实践:深入探索微服务架构的核心组件

在微服务架构日益盛行的今天,服务之间的注册与发现成为了保证系统高可用性和灵活性的关键。Eureka,作为Netflix开源的服务注册与发现框架,凭借其简单、健壮的特性,在微服务领域占据了举足轻重的地位。本文将深入剖析Eureka的原理&…

当前人形机器人公司及产品介绍

产品型号属地公司名字Optimus美国特斯拉Figure02美国FigureAIAtlas美国波士顿动力通用人形Apollo美国ApptronikPhoenix加拿大Sanctuary AIRoBee意大利OversonicASIMO日本本田NAO日本软银GR-1上海傅利叶远征A1上海智元XR4上海达闼先行者K1上海开普勒青龙上海国创AstribotS1深圳星…

网络安全实训第一天(dami靶场搭建,XSS、CSRF、模板、任意文件删除添加、框架、密码爆破漏洞)

1.环境准备:搭建漏洞测试的基础环境 安装完phpstudy之后,开启MySQL和Nginx,将dami文件夹复制到网站的根目录下,最后访问安装phptudy机器的IP地址 第一次登录删除dami根目录下install.lck文件 如果检测环境不正确可以下载php5.3.2…

Windows Server 域控制服务器安装及相关使用

目录 1.将客户机加入域 2.安装域控制器 3.新建域用户 4.设置用户登录时间,账户过期时间 5.软件分发 ​编辑 6.换壁纸 7.OU与GPO的概念 域为集中控制,拿下域控是拿下目标的关键 以Windows Server 2022为例 1.将客户机加入域 前提:客…

代理模式Proxy

一、代理模式(Proxy) 1.代理模式的定义 代理模式给某一个对象提供一个代理对象,并由代理对象控制对真实对象的访问,起到对代理对象已有功能的增强 通俗的来讲代理模式就是我们生活中常见的中介。 2.作用 中介隔离作用&#x…

前端读取response.headers异常:Cannot read properties of undefined (reading ‘split‘)

[TOC](前端读取response.headers异常:Cannot read properties of undefined (reading ‘split’) ) 前端读取response.headers异常 Cannot read properties of undefined (reading ‘split’) TypeError: Cannot read properties of undefined (reading ‘split’) 报错解释&a…

【JavaSE】解读Java中的toString方法

前言: 在Java中,toString方法来自java.lang.Object 类,然后所有对象都继承该Object 类。默认情况下,它的作用是返回对象的字符串表示形式。在实际开发中,重写 toString() 方法可以帮助我们以更易读的形式输出对象信息&…

Airflow学习笔记

1 概述 Airflow是一个以编程方式编写(要用python脚本),安排和监视工作流的平台。使用Airflow将工作流编写任务的有向无环图(DAG)。Airflow计划程序在遵循指定的依赖项,同时在一组工作线程上执行任务。丰富…

kaggle中访问本地上传的图片(找到图片地址)

由于代码中需要使用自己上传一个图片,对图片进行操作,尝试了很多种办法终于摸索出来了,希望可以帮助到大家 首先,在kaggle中左侧导航栏中找到datasets->New Dataset->Browse Files 创建成功后就可以看到数据集的详细信息 返回到代码中…

31集-33集【求助】AIGC返回的对话内容文字转语音失败-《MCU嵌入式AI开发笔记》

31集【求助】AIGC返回的对话内容文字转语音失败-《MCU嵌入式AI开发笔记》 问题描述 ESP32 C3开发板把AIGC大模型返回的对话文字转语音的时候出现错误。 我们先看一下附件Log, 梳理一下程序流程 按键,收到event Event received, cmd:1, da…

学习分享:如何利用AI创作高质量的文章【请按需收藏】

成长路上不孤单😊【14后小学生一枚,C爱好者,持续分享所学,如有需要欢迎收藏转发😊😊😊😊😊😊😊】 关于【如何利用AI创作高质量的文章】 AI给现代这…

pnpm【实用教程】2024最新版

pnpm 简介 pnpm 全称 performant npm,即高性能的 npm,由 npm/yarn 衍生而来,解决了 npm/yarn 内部潜在的 bug,极大的优化了性能,扩展了使用场景,被誉为 最先进的包管理工具 安装 pnpm npm i -g pnpm使用 pn…

Linux git安装与部署

目录 git安装 1、下载与安装 2、配置git账号信息 创建本地仓库 1、创建本地代码库文件夹 2、创建项目代码本地仓库文件夹 3、进入到projCode目录下,创建git本地仓库 4、创建过滤文件.gitignore 5、添加.gitignore到git暂存区 6、提交.gitignore 7、将项目…