Linux运维常用sed命令使用

news2025/2/27 21:11:32

sed 是一种流式文本编辑器,常用于文本替换、文本过滤、行选择等操作。

常见的 sed 使用方法

1、替换文本中的字符串

使用 sed 可以在文本中替换指定的字符串。例如,将文本中所有的 old_text 替换为 new_text,可以执行以下命令:
sed 's/old_text/new_text/g' file.txt
其中,s 表示替换操作,g 表示替换所有匹配到的字符串。file.txt 是要进行替换的文本文件名。
在这里插入图片描述

2、删除指定行

使用 sed 可以删除文本文件中的指定行。

2.1 单行删除

例如,删除文件中第3行的内容,可以执行以下命令:
sed '3d' file.txt
其中,3d 表示删除第3行的内容。
在这里插入图片描述

2.2 多行删除

如果要删除多行内容,可以用逗号分隔行号,例如:
sed '3,5d' file.txt
表示删除第3行到第5行的内容。
在这里插入图片描述

3、按条件替换

使用 sed 可以按照指定的条件替换文本文件中的字符串。
例如,将文本中行首为 old_text 的字符串替换为 new_text,可以执行以下命令:
sed 's/^old_text/new_text/g' file.txt
其中,^ 表示行首的意思,即只替换行首为 old_text 的字符串。
在这里插入图片描述

4、显示指定行

使用 sed 可以显示文本文件中的指定行。例如,显示文件中的第3行,可以执行以下命令:
sed -n '3p' file.txt
其中,-n 表示关闭默认输出模式,3p 表示输出第3行的内容。
在这里插入图片描述

5、执行多个命令

使用 sed 可以执行多个命令,例如,替换文件中的多个字符串,并删除指定行,可以执行以下命令:
sed -e 's/old_text1/new_text1/g' -e 's/old_text2/new_text2/g' -e '5d' file.txt
其中,-e 表示执行多个命令,用逗号分隔多个命令即可。这个命令的作用是将文本文件中的 old_text1 替换成 new_text1,将 old_text2 替换成 new_text2,并且删除第五行,-e 参数表示后面跟着一个 sed 命令,可以多次使用 。
在这里插入图片描述

6、删除某个字符串所在的行

sed '/pattern/d' file.txt
其中,pattern 是要删除的字符串。
在这里插入图片描述

7、在某个字符串所在的行前/行后插入一行

sed '/pattern/i new_line' file.txt
其中,pattern 是要插入行的位置,new_line 是要插入的新行。

行后插入行:sed '/pattern/a new_line' file.txt
其中,pattern 是要插入行的位置,new_line 是要插入的新行。
在这里插入图片描述

8、替换某个字符串所在的行

sed '/pattern/c new_line' file.txt
其中,pattern 是要替换行的位置,new_line 是要替换成的新行。
在这里插入图片描述

9、修改源文件内容

sed命令中,如果要替换源文件的内容,需要使用-i选项。具体用法如下:
sed -i 's/old_text/new_text/g' file.txt
使用 -i 选项会直接修改源文件的内容,因此需要谨慎使用。如果不确定修改后的结果是否正确,可以先使用 -i 选项的备份功能,将源文件备份一份,再进行修改。备份的命令如下:
sed -i.bak 's/old_text/new_text/g' file.txt
其中,.bak 是备份文件的后缀名,可以根据需要修改。执行这个命令会将 file.txt 文件备份为 file.txt.bak,然后将修改后的内容保存到 file.txt 文件中。
在这里插入图片描述

10、总结

除了前面提到的替换、删除、插入等基本用法,sed 命令还有一些常用的参数,具体如下:

  • -n:只输出经过编辑的那一行(默认情况下,sed 命令会输出所有的行)。
  • -e:允许对输入数据应用多个编辑器命令,多个命令之间用分号分隔。
  • -f:指定 sed 命令编辑脚本文件。
  • -r:启用扩展的正则表达式语法。
  • -i:直接修改源文件的内容,替换操作会对源文件进行修改,需要谨慎使用。
  • -b:在修改文件之前,为文件创建一个备份文件。
  • -u:使用非缓冲输出,即立即输出而不是等到缓冲区填满之后再输出。
  • -p:打印模式空间的内容,通常与 -n 选项一起使用。
    这些参数可以组合使用,实现更加复杂的操作。例如,可以使用 -ne 参数组合,只输出经过编辑的那一行,并禁止默认输出所有的行。

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

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

相关文章

面向国际市场:利用FaceBook实现外贸贸易突破

在全球化的商业环境下,利用社交媒体平台如FaceBook来推动外贸贸易已经成为许多企业的关注焦点。FaceBook作为全球最大的社交媒体平台之一,为企业提供了众多机会和工具,以扩大市场触达、建立品牌形象和跨文化沟通。 本文将介绍一些简单却有效…

计算机组成原理---第五章 中央处理器习题详解版

(一)课内习题 (二)课后习题 1.请在括号内填入适当答案。在CPU中: (1)保存当前正在执行的指令的寄存器是( IR ); (2)保存当前正在执行的指令地址的寄存器是( AR ) (3)算术逻辑运算结果通常放在( DR )和( 通用寄存器…

【openGauss实战13】闪回技术

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

SolidWorks创建自定义焊件轮廓的方法

在一些特定的设计情景下,一般的国标焊件库、ISO焊件库等可能满足不了我们的设计使用需求,这时候就需要我么你自己创建一个焊件轮廓,从而应用到我们的设计中。 创建新焊件轮廓的方法如下: 1.打开SolidWorks,创建一个新…

记录--9个封装Vue组件的小技巧

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 组件是前端框架的基本构建块。把它们设计得更好会使我们的应用程序更容易改变和理解。在这节课中,分享一下在过去几年中工作中学到的 9 个技巧。 1. 你可能不需要创建一个组件 在创建一个组…

eBpf在Android上的集成和调试

eBPF(Extended Berkeley Packet Filter )是一种新兴的linux内核功能扩展技术,可以无需修改内核代码,在保证安全的前提下,灵活的动态加载程序,实现对内核功能的扩展。 Android平台上也引入了对eBpf技术的支持…

Python—实现本地音乐播放器(添加/播放/暂停/下一首/上一首/音量/打开超链接)

文章目录 1.样例2.分析2.1播放器界面2.2功能2.2.1添加音乐,选择文件夹,显示文件夹里.Mp3文件2.2.2播放音乐,开始播放第一首音乐,按钮由"播放"变为"暂停",点击"暂停",变为"播放",播放显示Playing...2.2.3下一首,…

【ElasticSearch】分词器(ElasticSearchIK分词器)

1. 分词器介绍 •IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包•是一个基于Maven构建的项目•具有60万字/秒的高速处理能力•支持用户词典扩展定义 2. ik 分词器安装 IK 分词器安装 3. 分词器的使用 IK分词器有两种分词模式:ik…

港科夜闻|香港科大与香港科大(广州)管理层联席会议顺利召开

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大与香港科大(广州)管理层联席会议顺利召开。这是自内地和香港全面恢复通关以来,两校的高级管理团队首次举行线下的联席会议,面对面交流、讨论有关两校协同发展的重要议题。两校持续深入推进…

【零基础学web前端】走进CSS的大门,CSS引入方式,CSS基础选择器,CSS复合选择器

前言: 大家好,我是良辰丫,前面我们已经学了html的相关知识,今天我们一起去探索前端网页的css,那么css到底是什么呢?我们慢慢往下看.💞💞 🧑个人主页:良辰针不戳 📖所属专栏:零基础学web前端 🍎…

二叉树层级遍历以及相关练习

二叉树层级遍历以及相关练习 文章目录 二叉树层级遍历以及相关练习思想步骤代码实现相关练习 力扣:102. 二叉树的层序遍历 - 力扣(Leetcode) 思想 层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。 使用队列实现二叉树广度优先遍…

算法修炼之练气篇——练气二十层

博主:命运之光 专栏:算法修炼之练气篇 前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的…

实例演示如何结合Selenium和Requests进行自动化测试

下方查看历史精选文章 重磅发布 - 自动化框架基础指南pdfv1.1大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 Selenium和Requests是两个常用的自动化测试…

Meme和BRC-20的暴跌洗盘

* * * 原创:刘教链 * * * 5月以来的Meme(模因币,发音类似“谜姆”)狂欢,有ERC-20版本的Meme比如Pepe(青蛙佩佩),也有BRC-20版本的Meme比如ordi(序数协议本身的名字&…

IM即时通讯系统[SpringBoot+Netty]——梳理(二)

文章目录 五、IM开发核心之构建TCP网关(上)1、编写LimServer2、编写LimWebSocketServer3、使用snakeyaml动态配置文件4、大白话讲通信协议—详解主流通讯协议4.1、文本协议4.2、二进制协议4.3、xml协议4.4、可以落地使用的协议 5、私有协议编解码—设计篇…

ArcGIS栅格重采样与算法选择

本文介绍在ArcMap软件中,实现栅格图像重采样的具体操作,以及不同重采样方法的选择依据。 首先,如下图所示,是我们待重采样的栅格图像的属性界面。其中,可以看到此时栅格像元的边长为0.4867左右(由于图层是地…

“技术开发最应该做什么?”,聊聊我在服务端开发5年的理解和收获

我们新推出大淘宝技术年度特刊《长期主义,往往从一些小事开始——工程师成长总结专题》,专题收录多位工程师真诚的心路历程与经验思考,覆盖终端、服务端、数据算法、技术质量等7大技术领域,欢迎一起沟通交流。 本文为此系列第二篇…

我的.net视频课程

https://edu.csdn.net/lecturer/222?spm1002.2001.3001.4144

9.并发基础与CAS基本原理

线程的状态/线程的生命周期 初始化 Thread thread new Thread();运行 thread.start(); 运行中状态 ——> 调用yeild进入就绪状态就绪状态 ——> 通过系统调度(获取到cpu时间片),又会进入到运行中状态 等待 调用如下方法就从运行进入到等待状态: Object.wait()、Object.…

2360. 图中的最长环

方法一&#xff1a;拓扑排序加搜索 class Solution { public:bool vis[100005];vector<int>v[100005];int dfs(vector<int> &dist,int st,int step){vis[st]true; // cout<<st<<endl;int res0;for(int i0;i<v[st].size();i){int xv[st][i];if(…