Linux之sed命令和正则表达式

news2024/12/25 14:16:32

什么是sed编辑器?

        sed是一个命令行文本编辑工具,用于对文本进行处理和转换。它可以读取文本文件,对文件的各个行进行修改、删除和替换操作,并将结果输出到标准输出或者文件中。

        sed 被广泛用于Unix和类Unix系统中的脚本和命令行操作中,它是一种非交互式的文本处理工具。sed使用基于正则表达式的模式匹配和替换来实现各种文本操作。它可以实现的功能包括:替换指定文本、插入和删除文本、根据条件进行行选择等。

        sed具有简洁、高效和灵活的特点,可以批量处理大量的文本数据。由于其强大的文本处理能力,sed常被用于Shell脚本、文本转换、日志分析等场景中。

sed命令

u语法 sed [选项] [sed内置命令字符] [文件名]

        示例:

                used -n 'p' 文件路径

        常用功能包括结合正则表达式对文件实现快速增删改查,其中查询的功能中最常用的两大功能是过滤(过滤指定字符串)、取行(取出指定行)

选项:

-n取消默认输出格式,只打印处理过的行(通常搭配p使用)
-i 修改保存文件(默认为预览)
-e同时执行多个过滤
-r扩展正则表达式

内置命令字符

a在指定行后添加一条数据或多行数据
d删除匹配的整行内容
i在指定行前添加一条数据或多行数据
p打印当前匹配的数据
c更改匹配行的内容
w筛选的内容保存到文件
r读取文件并追加
s将匹配的内容进行替换(支持正则表达式)

范围

范围解释
空地址全文处理
单地址指定文件某一行
范围地址10,20 十到二十行,10,+5 第10行向下5行,/pattern1/,/pattern2/
/patter/包含//中的内容的行
步长1~2,标识1、3、5、7、9奇数行,2~2两个步长,标识2、4、6、8、10偶数行
 
示例

例1:展示文件中所有数据

sed -n p 文件名

例2:在第二行后添加一条数据

sed -i '2a 数据' 文件名

例3:把文件中的abc修改成张三

结尾如果是g代表全局匹配 结尾是i 代表忽略大小写 二者可同时写

sed s/abc/张三/g 文件名

但目前源文件并没有修改如果想要修改源文件需要在前面加-i

sed -i s/abc/张三/g 文件名

例4:删除所有行

sed -i 'd' 文件名

例5:替换行

c 替换指定行
示例: sed ‘2c abc’aaa

正则表达式

什么是正则表达式?

        正则表达式是一种字符串匹配模式的描述方法,它可以用于搜索、替换和提取文本中符合某种模式的内容。在sed中,正则表达式可以用来描述需要匹配或操作的模式。

正则表达式描述
^匹配行的开始
$匹配行的结尾
[]集合
[^]对集合取反
.匹配单个字符
*匹配以前一个字符任意次数
\{n,m\}匹配前一个字符n~m次
\{n\}匹配前后一个字符n次
\{n,\}匹配前一个字符n次以上
\(\)保留
正则示例

例1:匹配以数字开头的行:

sed -n '/^[0-9]/p' file.txt

例2:删除包含特定单词的行

sed '/word/d' file.txt

例3:使用正则表达式替换文件中满足特定模式的文本

sed '2s/lisi/wangyv/' file.txt

例4:取出linux的ip地址

ifconfig | sed -n '2s/^.*inet//gp'  |  sed -n 's/net.*$//gp'

2s :          处理第二行的内容

^.*inet        匹配inet之前所有的内容

g                全局匹配       

p                打印替换结果

net.*$         匹配net到结尾的内容

s/net.*$//gp 把匹配到的内容替换为空

正则拓展

注意:想要使用正则拓展必须加 -r 

正则符号描述
+最少匹配一次
?最多匹配一次
{n,m}匹配n到m次
|或者
()组合为整体
示例

例:为文件中每个大写字母添加括号[]

sed -r 's/([a-z])/[\1]/g' file.txt

如有错误给孩子提醒一下,感谢观看!

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

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

相关文章

二极管作用

防止电源反接 电路目的是为了,防止电源反接,对电路中的电子元器件造成破坏,造成财产损失或者人身安全。 原理 二极管单向导电性,二极管0.7V正向压降不会对电路造成影响 原理图 这里U7是一个二极管,如果电源反接&…

C++STL初阶(10):list的简易实现(下)

在上一文中我们完成了链表的多数基本接口,本文主要围绕构造函数进行补充 1. 链表的拷贝 在前文中我们没有手动实现拷贝构造,所以使用的就是编译器自动生成的浅拷贝 先使用一下编译器自动生成的浅拷贝: 我们在打印li2之前给li1加入一个数据&…

Python 如何使用 Contextlib 模块

Python 中的 contextlib 模块提供了一些实用工具,帮助我们管理上下文管理器和与上下文相关的操作。上下文管理器是一种对象,它定义了进入和退出代码块时要执行的操作,通常用于资源管理,如文件操作、网络连接等。上下文管理器通常与…

【SPIE出版】第四届计算机视觉、应用与算法国际学术会议(CVAA 2024,10月11-13)

计算机视觉、应用与算法的领域,一直在飞速发展,第四届计算机视觉、应用与算法国际学术会议(CVAA 2024) 将汇聚世界各地的顶尖学者、研究人员和企业代表,共同分享和交流计算机视觉在各个领域的最新研究成果、技术突破和产业应用。 …

ElementPlus table上移下移操作、表格嵌套树选择器

步骤条圆圈中的数字根据所选样式展示&#xff1a; <el-stepsstyle"margin-top: 20px; max-width: 700px"align-center:active"formModel.testData.length 1"><el-steptitle"Step 1"v-for"(item, index) in formModel.testData&qu…

技术应用 | 外语专业如何借助大模型转型升级?

一、选哪一条路&#xff1a;评测大模型、应用大模型、研发大模型 如果把大语言模型当作是“一个人”&#xff0c;那么既可以把这个“人”当作研究对象&#xff0c;研究它几岁了、智商如何了、能做什么、不能做什么、危不危险&#xff0c;也就是“评测大模型”&#xff1b;也可…

django电商易购系统-计算机毕业设计源码61059

目 录 1 绪论 1.1选题背景 1.2研究意义 1.3论文结构与章节安排 2 电商易购系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 电商易购系统总…

Java设计模式-原型模式-一次性理解透

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1. 前言2. 原型模式的主要角色2.1 原型接口或抽象类2.2 具体原型类2.3 客户端2.4 克隆方法 3. 原型模式使用场景3.1 创建对象是昂贵的3.2 对象的变化3.3 动态配置3.…

10-使用sentinel流控

本文介绍sentinel的直接流控的使用。 0、环境 jdk 1.8sentinel 1.8.2springboot 2.4.2 1、sentinel环境搭建 从官方发布的网站上下载: sentinel Jar&#xff0c;下载对应版本。 下载完成后&#xff0c;进入刚才下载的Jar文件所在的目录&#xff0c;执行如下命令&#xff1a…

Qt+OpenCV配置和测试

一、前言 OpenCV作为比较大众化的跨平台计算机视觉开源库&#xff0c;可以运行在多种操作系统上&#xff0c;通过与Qt的结合&#xff0c;能够轻松的是实现一些图像处理和识别的任务&#xff0c;本文在Windows操作系统的基础上具体讲解Qt和OpenCV的配置和环境搭建方法&#xff…

PHP企业员工考勤系统—计算机毕业设计源码17108

摘要 由于数据库和数据仓库技术的快速发展&#xff0c;企业员工考勤系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。员工管理系统对处理对象和服务对象&#xff0c;自身的系统结构&#xff0c;处理能力&#xff0c;都将适应技术发展的要求发生重大的变化。 …

叉车安装人脸识别管理系统,能带来哪些好处

当今工业生产中&#xff0c;叉车是一种常见的运输工具&#xff0c;广泛应用于各种场景&#xff0c;如工厂、仓库、码头等。然而&#xff0c;由于驾驶员的错误操作或非授权人员的驾驶&#xff0c;叉车在使用过程中可能会发生意外事故&#xff0c;给企业带来不小的损失。 为了提…

LangChain之数据库操作:通过链Chain和代理Agent查询数据库信息

Chain和Agent查询数据库 在LangChain&#xff0c;其提供了SQL Chain链和SQL Agent代理&#xff0c;他们支持基于自然语言提示构建和运行SQL查询&#xff0c;以此来操作数据库&#xff0c;并且与SQLAlchemy支持的任何SQL版本兼容。&#xff08;例如&#xff0c;MySQL&#xff0c…

自闭症儿童注意力分散怎么办?|星启帆自闭症寄宿学校

在自闭症儿童的成长过程中&#xff0c;一个常见且令人担忧的现象是“精神飘移行为”&#xff0c;这种行为表现为孩子沉浸在自己的小世界里&#xff0c;对外界刺激反应迟钝&#xff0c;甚至完全忽视。他们可能会做出一些怪异的动作、表现出刻板行为、自言自语&#xff0c;眼神呆…

Kafka服务端日志详解

文章目录 服务端日志Topic消息存储方式主体介绍log文件追加记录消息index和timeindex索引文件 日志文件清理Kafka的文件高效读写机制Kafka的文件结构顺序写磁盘零拷贝 合理配置刷盘频率客户端消费进度管理 服务端日志 Kafka的日志信息是通过conf/server.properties文件中的log…

用苹果机连接mac后怎么在电脑上调试苹果手机上页面的元素

问: 用苹果机连接mac后怎么在电脑上调试苹果手机上页面的元素, 使用MAC电脑、iPhone 真机调试 H5页面 回答: 使用MAC电脑、iPhone 真机调试 H5页面 简介 Safari 浏览器设置iPhone 手机设置开始调试 简介 为方便在 H5开发过程中在真实手机调试 H5页面&#xff0c;可进行一下…

Mybatis-springBoot

MyBatis 是一个流行的 Java 持久层框架&#xff0c;它简化了与关系型数据库的交互。通过将 SQL 语句与 Java 代码进行映射&#xff0c;MyBatis 提供了一种方便、灵活的方式来执行数据库操作。它支持动态SQL、缓存机制和插件扩展&#xff0c;使得开发人员能够更高效地编写和管理…

重学我的数据结构

二叉树 1. 遍历 (Traversal) 前序遍历 (Preorder Traversal): 先访问根节点&#xff0c;再访问左子树&#xff0c;最后访问右子树。 void preorderTraversal(Node root) {if (root null) return; System.out.print(root.value " "); preorderTraversal(root.left)…

韦东山瑞士军刀项目之I2C控制ssd 1306 OLED显示屏幕驱动源码分析(硬核)

太硬核了&#xff0c;但即便如此&#xff0c;我也只分析了如何实现ssd 1306的控制命令与显示命令的代码。尽管如此&#xff0c;我也了解了如何实现I2C的字符输出显示。意外收获是知道了ASCII码到底是个什么玩意儿。

python pygame如何实现碰撞检测

前言&#xff1a; 在python中&#xff0c;我们实现两个物品的碰撞检测往往是判断两个物体的x、y坐标是否有重合&#xff0c;根据坐标来进行判断&#xff0c;但是这种判断方式往往不太准确&#xff0c;对于一些透明部分&#xff0c;会出现误判的情况&#xff0c;今天介绍的是一…