[linux]sed命令基础入门详解

news2024/12/24 10:13:40

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

一.基本语法

sed [options] 'commands' files

  • options:可选的命令行选项。
  • commands:要执行的sed命令。
  • files:要处理的文件列表。
1.替换文本:

替换第一个匹配项:
sed 's/old/new/' file.txt

替换所有匹配项:
sed 's/old/new/g' file.txt


2.打印行:

打印文件中所有行:
sed -n 'p' file.txt


3.删除行:

删除包含特定文本的所有行:
sed '/pattern/d' file.txt


4.插入文本:

在第一行前插入文本:
sed 'i\new line' file.txt


5.追加文本:

在最后一行后追加文本:
sed 'a\new line' file.txt


6.替换特定行:

替换第3行:
sed '3s/old/new/' file.txt


7.使用模式分隔符:

使用其他字符作为分隔符:
sed 's#old#new#' file.txt


8.使用正则表达式:

使用扩展正则表达式(需要 -r 选项):
sed -r 's/regex/replacement/' file.txt


9.原地编辑文件:

直接修改文件内容:
sed -i 's/old/new/g' file.txt


10.不区分大小写:

进行不区分大小写的替换:
sed 's/old/new/I' file.txt


11.多行模式:

处理多行匹配:
sed ':a;N;$!ba;s/old/new/g' file.txt


12.使用循环:

对于每找到一个匹配项,执行特定命令:
sed -n '/foo/{ :a p; n; ba; }' file.txt

二.实操案例

首先需要建立一个文档。

1.替换文本

 cat test.txt    #与之后的内容进行对比
"
old-old-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

sed 's/old/new/' test.txt    #替换第一个匹配项

"
new-old-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

sed 's/old/new/g' test.txt    #替换所有匹配项
"
new-new-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

2.打印行

sed -n 'p' test.txt   #打印文件中所有行
"
old-old-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"


sed -n '2p' test.txt    #打印文件中第二行
"
I love biology
"


sed -n '2,4p' test.txt     #打印文件中第二到第四行
"
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
"

3.删除行

sed '/o/d' test.txt   #删除包含特定文本的所有行
"
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

4.插入文本

sed 'i\bew line' test.txt      #在第一行前插入
"
bew line
old-old-new
bew line
I love biology
bew line
>DJAKNCKALNXLKLHDJKkljkxkxhka
bew line
2021-6-27
bew line
你好,努力攀登的科学树
"



sed '3i\biology' test.txt       #在第三行前插入
"
old-old-new
I love biology
biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

5.追加文本

sed 'a\new line' test.txt  #在最后一行追加文本
"
old-old-new
new line
I love biology
new line
>DJAKNCKALNXLKLHDJKkljkxkxhka
new line
2021-6-27
new line
你好,努力攀登的科学树
new line
"

6.替换特定行

sed '2s/love/like/' test.txt   #替换第二行的love,将其改为like
"
old-old-new
I like biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

以上操作都没有改变原文件。

7.编辑原文件

 sed -i 's/old/new/g' test.txt | cat test.txt
"
new-new-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

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

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

相关文章

imx6ull/linux应用编程学习(5)FrameBuffer的应用编程

什么是FrameBuffer? Frame 是帧的意思, buffer 是缓冲的意思,所以 Framebuffer 就是帧缓冲, 这意味着 Framebuffer 就是一块内存,里面保存着一帧图像。帧缓冲(framebuffer)是 Linux 系统中的一种…

泰迪智能科技携手广州番禺职业技术学院共建上进双创工作室

为充分发挥校企双方的优势,促进产教融合,发挥职业教育为社会、行业、企业服务的作用,为企业培养更多高素质、高技能的应用型人才的同时也为学生实习、就业提供更大空间。6月26日,“泰迪广州番禺职业技术学院上进双创工作室签约授牌…

【C++ | 类型转换】转换构造函数、类型转换运算符 详解及例子源码

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰: 本文未经允许…

steam社区加载异常、加载失败、无法加载、黑屏的解决方法

随着steam夏季特卖的临近,最近几天开启史低折扣的大作已经越来越少了,不过也并不是没有。最经典的知名大作文明6之前已经打到1折的骨折价了,没想到也能背刺,现在是新史低价0.5折11元,很多玩家入手后纷纷前往社区看新手…

SerDes介绍以及原语使用介绍(4)ISERDESE2原语仿真

文章目录 前言一、iserdese2_module模块二、oserdese2_module模块三、顶层模块四、仿真结果分析 前言 上文详细介绍了ISERDESE2原语的使用,本文根据仿真对ISERDESE2原语的使用进一步加深印象。在仿真时,与OSERDESE进行回环。 一、iserdese2_module模块…

程序员学长 | 快速学会一个算法模型,LSTM

本文来源公众号“程序员学长”,仅用于学术分享,侵权删,干货满满。 原文链接:快速学会一个算法模型,LSTM 今天,给大家分享一个超强的算法模型,LSTM。 LSTM(Long Short-Term Memory…

AI绘画 Stable Diffusion【实战进阶】:图片的创成式填充,竖图秒变横屏壁纸!想怎么扩就怎么扩!

大家好,我是向阳。 所谓图片的创成式填充,就是基于原有图片进行扩展或延展,在保证图片合理性的同时实现与原图片的高度契合。是目前图像处理中常见应用之一。之前大部分都是通过PS工具来处理的。今天我们来看看在AI绘画工具 Stable Diffusio…

微信内置H5支付

🧑‍💻 写在开头 点赞 收藏 学会🤣🤣🤣 场景是用户通过微信扫app内的收款码,跳到一个h5页面。然后完成支付。 代码实现的整体流程: 使用微信扫码,码是app内生成的,码…

Qt WPS(有源码)

项目源码地址:WPS完整源码 一.项目详情 该项目仿照WPS,实现了部分的功能,能够很方便对文本和HTML进行修改,并且有打印功能,可以很方便的生成PDF。 应用界面 项目架构分析 这个项目主要可分为两个部分,一…

等保2.0安全计算环境解读

等保2.0,即网络安全等级保护2.0制度,是中国为了适应信息技术的快速发展和安全威胁的新变化而推出的网络安全保护标准。相较于等保1.0,等保2.0更加强调主动防御、动态防御和全面审计,旨在实现对各类信息系统的全面保护。 安全计算环…

鼠尾草(洋苏草)

鼠尾草(Salvia japonica Thunb.),又名洋苏草、普通鼠尾草、庭院鼠尾草,属于唇形科鼠尾草属多年生草本植物。鼠尾草以其独特的蓝紫色花序和长而细密的叶片为特点,常用于花坛、庭院和药用植物栽培。 鼠尾草的名字源自于…

Java访问修饰符的区别

public:公开的,任何地方都可以访问。 protected:受保护的,同一个包中的类和所有子类(可跨包)可以访问。 private:私有的,只有在同一个类中可以访问。 默认(无修饰符):包级…

[Go 微服务] go-micro + consul 的使用

文章目录 1.go-micro 介绍2.go-micro 的主要功能3.go-micro 安装4.go-micro 的使用4.1 创建服务端4.2 配置服务端 consul4.3 生成客户端 5.goodsinfo 服务5.1 服务端开发5.2 客户端开发 1.go-micro 介绍 Go Micro是一个简化分布式开发 的微服务生态系统,该系统为开…

stm32学习笔记---ADC模数转换器(理论部分)

目录 ADC简介 什么叫逐次逼近型? STM32 ADC框图 模数转换器外围线路 ADC基本结构图 输入通道 规则组的四种转换模式 第一种:单次转换非扫描模式 第二种:连续转换,非扫描模式 第三种:单次转换,扫描…

数据结构03 链表的基本操作【C++数组模拟实现】

前言:本节内容主要了解链表的基本概念及特点,以及能够通过数组模拟学会链表的几种基本操作,下一节我们将通过STL模板完成链表操作,可以通过专栏进入查看下一节哦~ 目录 单链表及其特点 完整链表构成 完整链表简述 创建单链表 …

MySQL自增主键踩坑记录

对于MySQL的自增主键,本文记录、整理下在工作中实际遇到的问题。 下面示例均基于MySQL 8.0 修改列的类型后,自增属性消失 CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL );上面的…

计算机监控软件有哪些?10款常年霸榜的计算机监控软件

计算机监控软件是企业管理和保护信息安全的重要工具,它们帮助企业管理者监督员工的计算机使用行为,确保工作效率、数据安全以及合规性。在众多监控软件中,有些产品因其卓越的功能、易用性、安全性以及持续获得的良好市场反馈而常年占据行业领…

什么是指令微调(LLM)

经过大规模数据预训练后的语言模型已经具备较强的模型能力,能够编码丰富的世界知识,但是由于预训练任务形式所限,这些模型更擅长于文本补全,并不适合直接解决具体的任务。 指令微调是相对“预训练”来讲的,预训练的时…

spring mvc实现一个自定义Formatter请求参数格式化

使用场景 在Spring Boot应用中,Formatter接口用于自定义数据的格式化,比如将日期对象格式化为字符串,或者将字符串解析回日期对象。这在处理HTTP请求和响应时特别有用,尤其是在展示给用户或从用户接收特定格式的数据时。下面通过…

集合,Collection接口

可动态保存任意多个对象,使用比较方便 提供了一系列方便操作对象的方法:add,remove,set,get等 使用集合添加删除新元素,代码简洁明了 单列集合 多列集合 Collection接口 常用方法 List list new Arra…