sed 删除某一行_Linux常用命令三剑客之sed,您真的会用吗?

请关注本头条号,每天坚持更新原创干货技术文章。

如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习

1. 前言

本文主要讲解Linux系统中的sed命令的作用与使用案例。

sed用于查找、过滤、文本替换、替换和插入、删除等文本操作。它是Linux/Unix系统提供的强大实用程序之一。我们可以在正则表达式中使用sed。使用sed命令之前,您应该至少对Linux正则表达式有基本的了解。

它提供了文本文件的非交互式编辑,这就是为什么它被用来自动编辑。它有两个缓冲区-pattern buffer和hold buffer。sed在逐行读取文件时使用pattern buffer,并且将当前读取的行插入到pattern buffer中,而hold buffer是一个长期存储,它捕获信息,存储信息,并在需要时重用这些信息。最初,两者都是空的。SED命令用于执行不同的操作,甚至可以不打开文件。

首先创建a.txt文件,我将在该文件上执行sed命令的操作。在本教程中,我使用了a.txt文件解释了所有的例子。如果我编写每个sed命令的输出,本文就会变得太长。因此,您可以先引用同一个文件来练习所有的命令。

查看a.txt的文本内容:

[root@rhel7 ~]# cat a.txt

输出如下:

life isn't meant to be easy, life is meant to be lived.Try to learn & understand something new everyday in life.Respect everyone & most important love everyone.Don’t hesitate to ask for love & don’t hesitate to show love too.Life is too short to be shy.In life experience will help you differentiating right from wrong.
2b1289db6699a9005e48cfdadb1f7e45.png

Linux/Unix中sed命令中的实用案例

2. 使用基本sed命令操作文件

2da852630a2e7fb6edb3d48455ea6a94.png

使用基本sed命令操作文件

2.1 在每一行后面插入一行空白

[root@rhel7 ~]# sed G a.txt

2.2 在每一行后面插入两行空白

[root@rhel7 ~]# sed 'G;G' a.txt

2.3 删除空行,并在每一行之后插入一个空行

[root@rhel7 ~]# sed '/^$/d;G' a.txt

2.4 在匹配“love”的每一行上插入空行

[root@rhel7 ~]# sed '/love/{x;p;x;}' a.txt

2.5 在匹配“love”的每一行下面插入空行

[root@rhel7 ~]# sed '/love/G' a.txt

2.6 在每一行的左边插入5个空格

[root@rhel7 ~]# sed 's/^/     /' a.txt

3. 行编号

给文件的每一行标上序号(左对齐)。=用于给行编号。用于数字和句子之间的制表符(TAB)

[root@rhel7 ~]# sed =  a.txt | sed 'N;s///'

给文件的每一行编号(左对齐,右对齐)。这个命令类似于cat -n filename

[root@rhel7 ~]# sed = a.txt | sed 'N; s/^/     /; s/ *(.{4,})/1  /'

为文件的每一行编号,空行除外:

[root@rhel7 ~]#  sed '/./=' a.txt | sed '/./N; s// /'

4. 删除指定行

删除特定行语法:

sed ‘nd’ filename

例如:

[root@rhel7 ~]# sed '5d' a.txt

删除最后一行语法:

sed ‘$d’ filename

删除从x到y的行

语法:

sed ‘x,yd’ filename
[root@rhel7 ~]# sed '3,5d' a.txt

从第N行开始删除语法:

sed ‘nth,$d’ filename

例如:

[root@rhel7 ~]# sed '2,$d' a.txt

删除内容匹配的行:语法:

sed ‘/pattern/d’ filename

例如:

[root@rhel7 ~]# sed '/life/d' a.txt

删除从第n行开始的行以及从第n行开始的第2行

语法:

sed ‘n~2d’ filename

例如:

[root@rhel7 ~]# sed '3~2d' a.txt

删除与内容匹配的行以及后面的两行语法:

sed ‘/pattern/,+2d’ filename

例子:

[root@rhel7 ~]# sed '/easy/,+2d' a.txt

删除空行:

[root@rhel7 ~]# sed '/^$/d' a.txt

删除空行或以“#”开头的行

[root@rhel7 ~]# sed -i '/^#/d;/^$/d' a.txt

5. 查看或打印文件

如果我们想查看文件的内容,那么我们使用cat命令,如果我们想查看任何文件的底部和顶部内容,我们使用head和tail等工具。但是,如果我们需要查看文件中间的特定部分,该怎么办呢?在这里,我们将讨论如何使用sed命令来查看文件指定部分。

fa9ca56b4f5505ec038e314f0d54b269.png

查看或打印文件


查看文件x到y行的内容:
语法:

sed -n ‘x,yp’ filename

例子:

[root@rhel7 ~]# sed -n '2,5p' a.txt

查看除给定范围之外的整个文件内容:语法:

sed ‘x,yd’ filename

例如:打印文件,除了第2和第4行。

[root@rhel7 ~]# sed '2,4d' a.txt

打印文件的第n行语法:

sed -n ‘address’p filename

例子:

[root@rhel7 ~]# sed -n '4'p a.txt

从第x行打印到第y行。语法:

sed -n ‘x,y’p filename

例子:

[root@rhel7 ~]# sed -n '4,6'p a.txt

只打印最后一行语法:

sed -n '$'p filename

例如:

[root@rhel7 ~]# sed -n '$'p a.txt

打印文件,从第n行到文件结束语法:

sed -n ‘n,$p’ filename

例如:

sed -n '3,$'p a.txt

6. 打印匹配内容

只打印与指定匹配内容的行

语法:

sed -n /pattern/p filename

例子:

[root@rhel7 ~]# sed -n /every/p a.txt

打印与指定内容匹配的行。例如从匹配行到第x行。语法:

sed -n ‘/pattern/,xp’ filename

例子:接下来打印与指定内容匹配的行,第三行打印与指定内容everyone匹配的行,因此它从第3行打印到第5行。如果要打印文件直到结束,请使用$来代替5。

[root@rhel7 ~]# sed -n '/everyone/,5p' a.txt

打印第x行到匹配的行,如果没有找到匹配内容,则打印到文件的最后。语法:

sed -n ‘x,/pattern/p’ filename

例如:

sed -n '1,/everyone/p' a.txt

从匹配的内容开始打印往下打印N行(不包括匹配行)

sed -n ‘/pattern/,+xp’ filename

例子:

sed -n '/learn/,+2p' a.txt

7. 用sed命令替换文件内容

8380bcaca0984d55588fbf3c5a7e2b43.png

用sed命令替换文件内容

把life替换为leaves

sed 's/life/leaves/' a.txt

替换一行中出现的第n个匹配内容语法:

sed ‘s/old_pattern/new_pattern/n’ filename

例子:替换匹配内容行的第2个匹配的内容:

[root@rhel7 ~]# sed 's/to/two/2' a.txt

我们写“2”是因为我们替换了第二个出现的内容。同样,你可以根据需要修改,比如修改为3或4等。

替换每一行中出现的所有匹配内容:

[root@rhel7 ~]# sed 's/life/learn/g' a.txt

将匹配内容从第n个开始替换为目标内容:语法:

sed ‘s/old_pattern/new_pattern/ng’ filename

例子:从每行第2个匹配内容开始替换

[root@rhel7 ~]# sed 's/to/TWO/2g' a.txt

这个sed命令将每一行(上面的命令带有g表示每一行)中出现的第二个、第三个等匹配的to替换为TWO。

如果您希望只打印替换行,那么使用“-n”选项和“/p”打印标志来只显示替换行。

[root@rhel7 ~]# sed -n 's/to/TWO/p' a.txt

如果您希望打印替换的行两次,那么只使用“/p”打印标记而不使用“-n”选项

[root@rhel7 ~]# sed 's/to/TWO/p' a.txt

替换特定行号上的匹配内容。这里,“m”是行号。

语法:

sed ‘m s/old_pattern/new_pattern/’ filename

例如:

[root@rhel7 ~]# sed '3 s/every/each/' a.txt

如果您只想打印替换的行

[root@rhel7 ~]# sed -n '3 s/every/each/p' a.txt

在已定义的行范围内替换字符串语法:

sed ‘x,y s/old_pattern/new_pattern/’ filename

x = 开始的行号y = 结束的行号

例子:

[root@rhel7 ~]# sed '2,5 s/to/TWO/' a.txt

注意:如果我们希望将匹配内容操作到文件的最后一行,可以使用$来代替y。

例如:

[root@rhel7 ~]# sed '2,$ s/to/TWO/' a.txt

如果您希望替换匹配的内容以忽略字符大小写(以大写或小写开头),那么有两种方法可以替换这些匹配的内容

首先,可以先/i的参数

语法:

sed ‘s/old_pattern/new_pattern/i’ filename

例如:

[root@rhel7 ~]# sed 's/life/Love/i' a.txt

第二种方法,可以使用正则表达式:

[root@rhel7 ~]# sed 's/[Ll]ife/Love/g' a.txt

将多个空格替换为单个空格

[root@rhel7 clang]# sed 's/  */ /g' filename

在指定匹配内容的行里,替换内容语法:

sed ‘/followed_pattern/ s/old_pattern/new_pattern/’ filename

例子:

[root@rhel7 ~]# sed '/is/ s/live/love/' a.txt

替换内容,除了第N行语法:

sed ‘n!s/old_pattern/new_pattern/’ filename

例子:

[root@rhel7 ~]# sed -i '5!s/life/love/' a.txt

8. 总结

通过本文的演示,您应该对sed命令的功能与作用应该有大致的了解了吧?这些案例都很实用的,可以收藏起来以备不时之需。

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

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

相关文章

现代软件工程 期中/期末总结博客作业

(软件工程作业列表) 经历了一个学期的学习, 可以把经历和收获总结一下。 第一部分 耕耘 请说明你付出了多少时间,写了多少代码,多少注释,多少文档(博客),多少次签入,最好用折线图或其他合适的图形化的方式…

caj转pdf python_PDF怎么转换成Word?2种方法3秒一键转换!建议收藏

Hello,大家好!今天给大家带来:PDF一键转Word的干货!保证全方位满足你工作和学习的需求~01Word转换法适用:纯文字简单型PDF文件。其实对于简单纯文字的PDF文件,直接使用Word就能转换,操作也非常简…

AI应用开发基础傻瓜书系列1-神经网络的基本工作原理

Copyright © Microsoft Corporation. All rights reserved. 适用于License版权许可 更多微软人工智能学习资源,请见微软人工智能教育与学习共建社区 Content01.0-神经网络的基本工作原理01.1-基本数学导数公式01.2-Python-Numpy库的点滴02.0-反向传播与梯度下…

动力环境监控系统论文_浅谈动力环境监控系统技术标准

动力环境监控系统技术标准规定了监控系统各因素指标、功能,对实现机房设备故障自动检测、无人化值守、降低维护保养成本的动环系统有重要的作用和意义。运用动环监控,能解决成本高、效率低、告警慢、信息落后能问题。一、动环监控系统的技术标准1、可靠性…

cmd python封装成exe_别再问我怎么Python打包成exe了!

也许我们不一定是专业的程序员,但是我们仍然可以通过代码提高我们的效率,尽量少加班,多陪陪媳妇(如果有)。再不行,让代码替我们干着重复的工作,我们有节省出来的时间打游戏不好嘛,是…

监听router_深入揭秘前端路由本质,手写 mini-router

前言前端路由一直是一个很经典的话题,不管是日常的使用还是面试中都会经常遇到。本文通过实现一个简单版的 react-router 来一起揭开路由的神秘面纱。通过本文,你可以学习到:前端路由本质上是什么。前端路由里的一些坑和注意点。hash 路由和 …

AI应用开发基础傻瓜书系列附录-基本数学导数公式

基本函数导数公式 Copyright © Microsoft Corporation. All rights reserved. 适用于License版权许可 更多微软人工智能学习资源,请见微软人工智能教育与学习共建社区 Content01.0-神经网络的基本工作原理01.1-基本数学导数公式01.2-Python-Numpy库的点滴02.…

5gh掌上云计算认证不通过_阿里云ACP认证考试攻略、考试心得、费用及常见问题...

阿里云ACP级认证是阿里云的专业工程师认证,云吞铺子分享ACP认证考试攻略、考试心得、考试费用及常见问题:ACP认证分类ACP认证根据所属领域不同分为五类,即即云计算、大数据、大数据分析师、云安全、企业互联网架构,考试方向不同考…

AI应用开发基础傻瓜书系列2-神经网络中反向传播与梯度下降的基本概念

AI应用开发基础傻瓜书系列2-神经网络中反向传播与梯度下降的基本概念 Copyright © Microsoft Corporation. All rights reserved. 适用于License版权许可 更多微软人工智能学习资源,请见微软人工智能教育与学习共建社区 Content01.0-神经网络的基本工作原理0…

verilog异步复位jk触发器_Verilog专题(九)DFF、Dlatch、JK flipflop

DFF、Dlatch、JK flip-flop对于verilog的学习,这里推荐一个比较好的实践网站HDLBits:https://hdlbits.01xz.net/wiki/Main_Page本系列记录一些我觉得有价值的题目,希望通过这些题目可以对verilog更加熟练。D flip-flops D触发器根据复位的…

AI应用开发基础傻瓜书系列3-激活函数和损失函数

Copyright © Microsoft Corporation. All rights reserved. 适用于License版权许可 更多微软人工智能学习资源,请见微软人工智能教育与学习共建社区 Content01.0-神经网络的基本工作原理01.1-基本数学导数公式01.2-Python-Numpy库的点滴02.0-反向传播与梯度下…

中两个数做减法_人生下半场,学会做减法

作者:洞见余生人生如逆旅,你我皆行人。梭罗在瓦尔登湖中写道:“一个人,只要满足了基本生活所需,不再汲汲于声名,不再汲汲于富贵,便可以更从容,更充实地享受人生。”曾经觉得&#xf…

AI应用开发基础傻瓜书系列3-激活函数

Copyright © Microsoft Corporation. All rights reserved. 适用于License版权许可 更多微软人工智能学习资源,请见微软人工智能教育与学习共建社区 Content01.0-神经网络的基本工作原理01.1-基本数学导数公式01.2-Python-Numpy库的点滴02.0-反向传播与梯度下…

cifs挂载 mount ubuntu_centos或者Ubuntu挂载windows10文件夹

一、centos挂载windows文件夹格式:mount -t cifs //IP/share-folder /mnt-point -o usernameyour-username,passwdyour-password或者mount //192.168.1.100/www /usr/local/nginx/html/ -o username"你的window管理员账号",password"你的window管理…

AI应用开发基础傻瓜书系列3-损失函数

Copyright © Microsoft Corporation. All rights reserved. 适用于License版权许可 更多微软人工智能学习资源,请见微软人工智能教育与学习共建社区 Content01.0-神经网络的基本工作原理01.1-基本数学导数公式01.2-Python-Numpy库的点滴02.0-反向传播与梯度下…

五大质量工具详解及运用案例_掌握质量管理五大工具,实现九段质量管理成长...

对于工厂企业来说,产品的质量是企业经营的命脉,那么质量管理工作要怎么去做好就是一个关键。今天给大家分享关于质量管理五大核心工具的内容,那何为五大工具,他们都有什么特点,又有何要求?我们将其中的主要…

双层板在哪层覆铜_PCB覆铜箔层压板分类和工艺解析

PCB覆铜箔层压板随着电子信息产业的快速发展,电子产品和电路组装技术也迈上了一个新的台阶。它推动了pcb制造技术向微孔径、细线、高密度布线、多层化方向发展。对覆铜板的耐热性、低膨胀系数、高尺寸稳定性和低介电损耗提出了新的要求。①PCB覆铜箔层压板分类PCB覆…

现代软件工程 作业 团队冲刺阶段的要求

1. 对团队冲刺的要求 团队在日期区间任选 10 天进行冲刺 (sprint),每天冲刺要在当天固定时间点发布一篇随笔。具体的博文规范如下: 每篇博客的要求: ① SCRUM: 每个成员描述:我昨天的成就(完成了哪个任务,花了多少时间…

两个numpy取相同值_闲谈Numpy的切片规则

我想说在学numpy库的时候切片真的让我有点痛苦的,逗号分号括号数字交织在一起刚开始看的我简直脑袋要爆炸,不过后来静下心来仔细看了看,发现其实也米有这么复杂,毕竟基于python的numpy库也是遵循着特定的语法的。今天就来聊聊这个…

微软开源自动机器学习工具 – NNI安装与使用

微软开源自动机器学习工具 – NNI安装与使用NNI的众多特点开启你的第一次NNI之旅 安装 三步准备实验(1) 准备搜索空间(2) 准备实验代码(3)定义实验配置 一行命令开始训练 webUI查看结果扩展阅读 基础定义 扩…