Linux文本三剑客之sed

set的定义:

sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中。
sed的执行过程:
读取  目标文件 的每行数据依次加入到缓冲区(模式空间)里,默认从第一行开始读取
执行  使用定义的增删改查命令来处理读取到缓冲区行数据
显示  将处理后的行数据输出到屏幕显示

命令格式:

案例:打印cat.txt 文件的内容

1.sed -选项 ‘操作’ 文件名1 文件名2 ...

2.sed   -n  '{

}'  文件名

选项:

-e :表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,执行多个操作命令要多几个e的使用
 -f :表示用指定的脚本文件来处理输入的文本文件。
-h 或--help:显示帮助。
-n   --quiet 或 silent:禁止sed编辑器输出,但可以与p命令一起使用完成输出。
-i:直接修改目标文本文件。

常用操作:

s:替换,替换指定字符。
d:删除,删除选定的行。
a:增加,在当前行下面增加一行指定内容。
i:插入,在选定行上面插入一行指定内容。
c:替换,将选定行替换为指定内容。
y:字符转换,转换前后的字符长度必须相同。
p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以 ASCII 码输出。其通常与“-n”选项一起使用。
=:打印行号。
l(小写L):打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)

常用操作演示:

一.打印内容     p(打印行内容)  =(打印行号)   l(打印ASCII字符)

sed -n -e '行号区间p'                       #根据行号或行区间进行打印    打印第一行内容

sed -n -e '/字符串/p'                       #根据字符串匹配行进行打印    打印包括字符串e的行内容

sed -n -r -e '/正则表达式/p'          #根据正则表达式匹配行进行打印   要使用扩展元字符要使用-r

    打印以o为开头的行内容

sed -n -e '1~2p'                        #从第一行开始每隔2行查看     

案例: 打印显示奇数行和偶数行

二.删除删除    d

sed -e '行号区间d' 文件名        删除第一行行内容

sed -e '/字符串/d                删除空行内容

         

注意一下下面的案例

  
sed -r -e '/正则表达式/d'      扩展元字符需要用 r      删除以o为开头的字符

三.替换    s(字符串替换)    c(整行内容替换)     y(对应字符替换) 

s:字符串替换

sed -e '行号区间 s/old/new/g'           sed -n -e '行号区间 s/old/new/gp'    #打印被修改的行

 修改/etc/yum.conf 文件第一行到第12行 开头+# 

sed -e '行号区间 s/old/new/gw 保存文件'     #保存被修改的行

sed -e '/字符串/ s/old/new/g'          g的位置可以指定数字 代表修改第几个sed -r -e '/正则表达式/ s/old/new/g'     扩展元字符需要加 -r
sed -r -e 's/(xxx)(xxx)(xxx)/\3\2\1/'       扩展元字符需要加 -r

c:整行内容替换

sed -e '行号c 新行内容'

sed -e '/字符串/c 新行内容'
 

y: 对应字符替换

sed -e 'y/旧字符/新字符/'      #注:新字符和旧字符的长度要一致

四.插入:

 a(在指定行下面插入行内容)

sed -e '行号区间a 行内容'


sed -r -e '/字符串或正则/a 行内容'

 i(在指定行上面插入行内容)

sed -e '行号区间i 行内容'
sed -r -e '/字符串或正则/i 行内容'

r(在指定行下面插入整个文件内容)

五.复制粘贴   H(复制指定行到剪切板)    G(将剪切板内容粘贴到指定行下面)

sed -e '1,3H;$G'           #将1-3行内容复制粘贴到最后一行下面


sed -e '1,3{H;d};$G'       #将1-3行内容剪切粘贴到最后一行下面

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

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

相关文章

Nextjs 动态路由获取参数

目录 一、创建page目录下的路由文件 二、通过useRouter来获取动态参数 先看官方文档:Routing: Dynamic Routes | Next.js 使用Nextjs13版本参考官方文档后实现仍有问题,网上的材料大多和官网一致,经过测试后,我找到了这个解决方…

【日记】今天好困(407 字)

正文 4T 硬盘降价了,好心动。虽然只降了 10 块钱……. 为什么硬盘这么贵啊!哼。 柜面上杂事好多。虽然一天到晚见不到几个客户,但杂事就是很多。一个头两个大。也不知道从哪儿冒出来的这么多事。 芒果干到了!还没去取,…

sql把一个表的某几列的数据存到另一个表里

一.如何用slq语句把一个表中的某几个字段的数据插入到另一个新表中,就要用下面这条slq语句: insert into 表名1(字段1,字段2) select 字段1,字段2 from 表名2 这里有一点值得注意的是这2个字段要一一对应,并且按顺序。 二.如果另一个表是…

JAVASE之类和对象(1)

路虽远,行则将至;事虽难,做则必成。 主页:趋早——Step 专栏:JAVASE gitte:https://gitee.com/good-thg 引言: 这篇文章我们只介绍前半部分,下一篇文章会介绍剩下的部分。 目录 一、…

LeetCode 面试150

最近准备面试,我以前不愿意面对的 现在保持一颗本心,就是专注于算法思想,语言基础的磨炼; 不为速成,不急功近利的想要比赛,或者为了面试。 单纯的本心,体验算法带来的快乐,是一件非常…

Python操作MySQL数据库的工具--sqlalchemy

文章目录 一、pymysql和sqlalchemy的区别二、sqlalchemy的详细使用1.安装库2.核心思想3.整体思路4.sqlalchemy需要连接数据库5.使用步骤1.手动提前创建数据库2.使用代码创建数据表3.用代码操作数据表3.1 增加数据3.2 查询数据3.3 删除数据3.4 修改数据 一、pymysql和sqlalchemy…

2025秋招深度学习基础面试题(一)

01. 卷积和BN如何融合提升推理速度 Conv和BN的融合:在网络的推理阶段,可以将BN层的运算融合到Conv层中,减少运算量,加速推理。本质上是修改了卷积核的参数,在不增加Conv层计算量的同时,略去了BN层的计算量。def fuse_conv_bn(conv, bn):std = (bn.running_var + bn.eps).…

数据仓库、数据中台、大数据平台之间的关系

数据行业经常会出现数据仓库、数据中台、大数据平台等概念,容易产生疑问,它们中间是相等,还是包含的关系? 数据中台和数据仓库概念的关系 数据中台概念是包含数据仓库的,数据仓库是数据中台中的一部分,包含…

探索Facebook:数字社交的新时代

Facebook,作为全球最大的社交网络平台之一,一直在引领着数字社交的发展潮流。随着科技的不断进步和社会的不断变迁,Facebook也在不断演进和创新,迎接着数字社交的新时代。本文将探索Facebook在数字社交领域的新发展,以…

Behind the Code:Polkadot 如何重塑 Web3 未来

2024 年 5 月 17 日 Polkadot 生态 Behind the Code 第二季第一集 《创造 Web3 的未来》正式上线。第一集深入探讨了 Polkadot 和 Web3 技术在解决数字身份、数据所有权和去中心化治理方面的巨大潜力。 🔍 查看完整视频: https://youtu.be/_gP-M5nUidc?…

抖音视频怎么去水印保存部分源码|短视频爬虫提取收集下载工具

抖音视频怎么去水印保存部分源码|短视频爬虫提取收集下载工具 抖音视频去水印保存部分源码: 通过使用Python中的requests、re和os等库,可以编写如下代码来实现抖音视频去水印保存的功能。 短视频爬虫提取手机下载工具的使用方法: 该工具主…

BevDet-4d(2): 环境安装及效果展示

1. 环境安装 conda create -n bevdet python=3.8 conda activate bevdet ​ # 3 虚拟环境bevdet中安装torch pip install spconv pip install torch==1.10.0+cu113 torchvision==0.11.0+cu113 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch

【数理统计02】延森Jensen‘s不等式的证明

延森不等式(Jensen’s Inequality)是凸函数理论中的一个重要结果,广泛应用于概率论、统计学和优化理论等领域。这个不等式的基本形式是: 对于一个凸函数 f f f和一个随机变量 X X X,如果 E [ X ] \mathbb{E}[X] E[X]存…

安科瑞为河南省促进分布式光伏发电健康持续发展提供解决方案

1 光伏、储能运维市场分析 在光伏、储能行业飞速发展的同时,已建的光伏、风力发电站和储能系统的监控、运维管理项目的招标也非常多,2023年上半年,光伏电站开发企业运维招标规模28.6GW,同比增长204.3%,上述28.6GW招标…

Blender导出fbx模型,导入到ue5中模型丢失纹理材质

UE5系列文章目录 文章目录 UE5系列文章目录前言一、问题原因二、最终效果 前言 Blender导出fbx模型,导入到ue5中,发现模型丢失纹理材质,里面的原神人物模型妮露居然是白模,郁闷了大半天 一、问题原因 我在Blender导出fbx文件时…

【Python】全局变量与init的区别

一个脚本里,设置全局变量,和初始化类时__init__中加载,有什么区别? 在Python脚本中,使用全局变量和在类的__init__方法中加载数据有几个关键区别: 作用域: 全局变量:全局变量在整个…

C中十进制转十六进制示例

uint8_t QR_code_RxBfr[255]{0}; uint8_t TouchCode[100];memcpy (&Sys.TouchCode[0], &QR_code_RxBfr[0], Sys.QR_code_Len);Str &Sys.TouchCode[TmpVble];Sys.Card_ID 0; while(0 ! isdigit(*Str)){Sys.Card_ID Sys.Card_ID*10 *Str - 0;Str;} 最后在通过以下…

嵌入式科普(18)Ubuntu在移动硬盘的安装和启动

目录 一、概述 二、应用场景 三、移动硬盘安装Ubuntu 3.1 移动硬盘格式化 3.2 VMware安装Ubuntu到移动硬盘 四、电脑BIOS启动移动硬盘Ubuntu 五、从VMware启动移动硬盘Ubuntu 六、问题解决(坑)和思考提问 嵌入式科普(18)Ubuntu在移动硬盘的安装和启动 一、概述 在移动硬…

在R中赞扬下努力工作的你,奖励一份CheetShet

传说有个R,R里有个包,包的名字叫praise,会一直不停地夸赞你。 > praise() [1] "You are sensational!" > praise() [1] "You are luminous!" > praise() [1] "You are pioneering!" > praise() […

P1【知识点】【数据结构】【链表LinkedList】C++版

链表是一种逻辑上连续,内存上分散的线性表数据结构,是用一组任意的空间(可以连续,也可以不连续)来存放数据元素。每个数据元素成为一个”结点“,每个结点由数据域和指针域组成。 访问元素(Acce…