6.文本三剑客--sed

news2024/10/7 14:25:08

文章目录

  • 文本三剑客
    • sed
      • 介绍
      • 命令介绍
      • 打印内容
      • 删除
      • 替换
      • 插入
      • 分组

文本三剑客

sed

介绍

sed编辑器

sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来

编辑数据流。

sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要

么存储在一个命令文本文件中。

sed的工作流程主要包括读取、执行和显示三个过程:

  • 读取:sed从输入流 (文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)
  • 执行:默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。
  • 显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重 复执行,直至所有内容被处理完。

sed对数据的处理是对缓冲区的文件进行处理,一般不会对源文件进行修改

在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。
注意:默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。

对于很大的文件,流编辑器处理会非常慢,通过IO一行一行处理

处理方法:1. 将文件通过cat显示,再通过管道符传送

2. 将大文件切分成小文件再处理

命令介绍

命令格式:

sed -e '操作' 文件1 文件2
sed -n -e '操作' 文件1 文件2
sed -f 脚本文件 文件1 文件2
sed -i -e '操作' 文件1 文件2


sed -e 'n{          ##   n   指定行号
操作1
操作2

}' 文件1 文件2
常用选项:

-e 或 --expression=  :表示用指定命令来处理输入的文本文件,只有一个操作命令时					  可省略,一般在执行多个操作命令使用

-f 或 --file=  :表示用指定的脚本文件来处理输入的文本文件

-h 或  --help  :显示帮助

-n 、--quiet 或 silent  :禁止sed编辑器输出,
						 但可以与   p   命令一起使用完成输出

-i  :直接修改目标文本文件
常用操作:

s :替换,替换指定字符

d :删除,删除选定的行

a :增加,在当前行下面增加一行指定内容

i :插入,在选定行上面插入一行指定内容

c :替换,将选定行替换为指定内容

y :字符转换,转换前后的字符长度必须相同

p :打印,如果同时指定行,表示打印指定行;
	    如果不指定行,则表示打印所有内容;
        如果有非打印字符,则以ASCII码输出,其通常与  -n   选项一起使用
        
= :打印行号


l(小写L) :打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)

打印内容

sed -n -e 'p' file     ##打印内容
cat file | sed -n 'p'   ##只有一个操作命令  -e  可省略

cat file | sed -n '='   ##打印行号
cat file | sed -n 'l'   ##打印内容包括换行符等

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

cat file | sed -n -e '=' -e 'p'   ##同时显示行号和内容
cat file | sed -n '=;p'    ##实现多个命令的同时执行
cat file | sed -n '= 回车 p'

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

cat file | sed -n '4p'    ##打印第四行
cat file | sed -n '$p'    ##打印最后一行
cat file | sed -n '1,3p'  ##打印1到3行
cat file | sed -n '4p;$p'  ##打印第四和最后一行
cat file | sed -n '1,+3p'  ##打印第一行以及之后的连续三行
cat file | sed '5q'        ##执行到第五行退出,就显示前五行

在这里插入图片描述

cat file | sed -n 'p;n'    ##显示奇数行    ;n 表示移动到下一行
##第一次执行在第一行,通过p打印,  添加  n  将sed处理的行到第二行,结束
##第二执行时,自动到第三行,通过p打印,再自动跳转到下一行,结束执行

cat file | sed -n 'n;p'   ##显示偶数行

cat file | sed -n '2,${n;p}'  ##从第二行到最后行,执行  n;p  操作

cat file | sed -n '3 {p;n;n;p}' ## 只在第三行处理

在这里插入图片描述

##通过字符串打印行内容
##  使用   //    中间添加字符串,能使用正则表达式

cat file | sed -n '/root/p'   ##将包含 root 字符串 的行打印出来
cat file | sed -n '/^root/p'  ##打印以root开头的行

cat file | sed -nr '/root|ftp/p'  ##同时打印两个
cat file | sed -n '/root\|ftp/p'

cat file | sed -n '2,/ftp/p'    ##从第二行开始,显示到第一个FTP的内容

扩展正则要添加  -r       不添加的话要使用   \

在这里插入图片描述

删除

cat file | sed '3d'     ##删除第三行
cat file | sed '3,5d'   ##删除3到5行
cat file | sed '$d'     ##删除最后一行

在这里插入图片描述

cat file | sed '/login$/d'  ##删除以什么什么结尾的行
cat file | sed '/bash$/!d'  ##删除不是以 bash  结尾的行
cat file | sed -r '/[^(bash)]$/d'

在这里插入图片描述

cat file | sed '/2/d'   ##删除包含2的行
cat file | sed -r '/2|3/d'   ##删除包括2或者3的行
cat file | sed -r '2,/3/d'   ##从第二行开始删除到含有第一个3的行

在这里插入图片描述

cat file | sed -r '/2/,/3/d'  ##从第一个包含2的行删到第一个包含3的行

cat file | sed  '/2/,/3/d'  ##在删除时,不会停止,在第一个结束后,还会在后                             面继续找匹配的行
##从第一个包含字符串1的行开始删到第一个包含字符串2的行,之后行会重复之前的规则操作

在这里插入图片描述

##删除空行的方法
grep -v "^$"
tr -s '\n'
sed '/^$/d'

在这里插入图片描述

替换

s/abc/123/2  ##替换第二个abc为123
s/abc/123/g  ##替换所有的abc
s/abc/123/p  ##替换并打印行

在这里插入图片描述

cat file | sed -n 's/root/admin/p'  ##替换root并打印替换的行
cat file | sed -n 's/root/admin/2p'
cat file | sed -n 's/root//gp'     ##删除root字符不删除行

在这里插入图片描述

cat file | sed -n 's/^#//p'
cat file | sed -i -n 's/^/#/p'  ##批量添加 #  并修改文件

在这里插入图片描述

cat file | sed '5,10 s/^#//'    ##5到10行删除#
cat file | sed 's/^#//;n'     ##删除奇数行的#

在这里插入图片描述

cat file | sed -n '/swap/ s/^/#/p'  ##将包含字符串的行替换
cat file | sed -n '/^UUID/ s/^/#/p'

cat file | sed 's/.*swap.*/#&/'   ##  & 表示前面正则所匹配到的行

在这里插入图片描述

cat file | sed '10,20 s/^/#/w 123.txt'   ##将修改的行保存到其他文件
cat file | sed -n '10,20 s/^/#/p' > 123.txt

在这里插入图片描述

cat file | sed -n 's/\/bin\/bash/\/sbin\/nologin'

cat file | sed -n 's#/bin/bash#/sbin/nologin#p' 
##可以将分隔符替换成其他符号,数字也行

cat file | sed -n 's9\945\9\99\98\939g'  ##将94599替换为9893

在这里插入图片描述

##把以root开头的行注释了
##将ftp都替换成mysed
##把以nologin为结尾的行删除

vim mysed
/^root/ s/^/#/
s/ftp/mysed/g
/nologin$/d

sed -f mysed /opt/file

插入

sed '10c hello world' file  ##替换指定行的整行内容

在这里插入图片描述

sed 'y/145/abc' file   ##将145转换为abc,对应关系

在这里插入图片描述

sed '1a 123' file   ##在第一行下面插入
sed '$a 123' file   ##在最后一行插入
sed '1,3a 123' file
sed '1,3i 123' file  ##在指定行上面

在这里插入图片描述

sed '1r 123.txt' file   ##在第一行后读取文件内容,实现文件合并

sed '/^#t/i 123' file   ##行号可以是字符串

在这里插入图片描述

sed '1,3H;$G' file   ##将1到3复制到最后
sed '/^$/d'

sed '1,3H;10,$G' file  ##将1到3行复制到10到最后,每行都粘贴
 
 ##剪切   保持空间
sed '1,3{H;d};$G' file

在这里插入图片描述

分组

sed -r 's/(111)(222)(333)/\3\2\1/'
\3  代表第三组
\2 代表第二组
sed -r 's/(^.)(.*)(.$)/\3\2\1/'          ##实现第一个和最后一个进行交换

在这里插入图片描述

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

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

相关文章

Robot Techology

Two-Stage Grasping: A New Bin Picking Framework for Small Objects 摘要:本文提出了一种新的抓仓框架,两级抓取,旨在精确抓取杂乱的小物体。 在第一阶段进行了对象密度估计和粗糙抓取。在第二阶段,需要进行精细的分割、检测、…

怎么制作网站?手把手教你10个网站建设的步骤!

怎么制作网站?手把手教你10个网站建设的步骤!网站建设需要进行10个步骤,首先要确定网站建设的目标,考虑用户、品牌信息和竞争对手等,避免方向错误。其次,绘制网站建设地图和原型,确定位置大小、…

2023-详解整个数据仓库建设体系

一、数据仓库的基本概念 数据仓库与数据库的区别 数据仓库分层架构 数据仓库元数据的管理 二、数仓建模方法 范式建模法 维度建模法 实体建模法 三、维度建模 维度建模中表的类型 维度建模三种模式 维度建模过程 四、实际业务中数仓分层 数据源层ODS 数据明细层DW…

老域名扫描软件-老域名采集挖掘工具

老域名挖掘软件 老域名挖掘软件是一种可以帮助用户发现已过期或未续费的老域名的工具。以下是该软件主要特点: 大数据分析:该软件通过大数据分析技术,深度挖掘互联网上的闲置老域名,发现可用的未续费或已过期域名,从…

【面试题】面试官:说说你对 CSS 盒模型的理解

前言 CSS 盒模型是 CSS 基础的重点难点&#xff0c;因此常被面试官们拿来考察候选人对前端基础的掌握程度&#xff0c;这篇文章将对 CSS 盒模型知识点进行全面的梳理。 我们先看个例子&#xff1a;下面的 div 元素的总宽度是多少呢&#xff1f; js <!DOCTYPE html> &…

第七章结构性模式—适配器模式

文章目录 适配器模式解决的问题概念结构 类适配器模式对象适配器模式接口适配器模式应用场景JDK 源码 - Reader 与 InputStream 结构型模式描述如何将类或对象按某种布局组成更大的结构&#xff0c;有以下两种&#xff1a; 类结构型模式&#xff1a;采用继承机制来组织接口和类…

AUTOSAR-MemIf

1、MemIf的功能 从AUTOSAR的架构图中可以看出&#xff0c;MemIf(Memory Abstraction Interface)模块位于Memory Hardware Abstraction。  一方面&#xff0c;NvM使用MemIf提供的接口访问NV memory&#xff08;NV memory分为两种&#xff1a;Flash和EEPROM&#xff0c;位于MCAL…

APP图标尺寸规范一文了解清楚

在进行图标设计前&#xff0c;熟知手机 app 图标尺寸规范&#xff0c;能更好地去针对不同平台设计出更极致的图标。当前智能手机系统主要以 iOS 及 Android 为主&#xff0c;APP 图标是产品给用户的第一印象&#xff0c;图标视觉设计的美感与吸引力&#xff0c;与用户是否选择下…

分子模拟力场

分子模拟力场 AMBER力场是在生物大分子的模拟计算领域有着广泛应用的一个分子力场。开发这个力场的是Peter Kollman课题组&#xff0c;最初AMBER力场是专门为了计算蛋白质和核酸体系而开发的&#xff0c;计算其力场参数的数据均来自实验值&#xff0c;后来随着AMBER力场的广泛…

冷链保温箱在冷链中扮演了什么角色?

冷链运输是指某些食品原料、经过加工的食品或半成品、特殊的生物制品在经过收购、加工、灭活后&#xff0c;在产品加工、贮藏、运输、分销和零售、使用过程中&#xff0c;其各个环节始终处于产品所必需的特定低温环境下&#xff0c;减少损耗&#xff0c;防止污染和变质&#xf…

如何用私域流量让不知名新品牌大放异彩……

说到不知名品牌&#xff0c;那minayo这个品牌应该绝大部分人都没听说过&#xff0c;因为他从诞生到今天也就刚刚一年的时间。 minayo是一家功能性食品品牌&#xff0c;专注于美容类健康食品领域&#xff0c;主要为用户提供 AG 饮料、植物酵素、美白片、胶原蛋白果冻等产品。 …

基于区域的图像分割

文章目录 基于区域的图像分割基本原理常用的算法实现步骤示例代码结论 基于区域的图像分割 基于区域的图像分割是数字图像处理中常用的一种方法&#xff0c;它通过将图像中的像素分配到不同的区域或对象来实现图像分割的目的。相比于基于边缘或阈值的方法&#xff0c;基于区域…

汉明码奇偶校验矩阵理解

首先看 汉明码 一、矩阵解释 单bit纠正&#xff08; SEC&#xff0c;single error correction &#xff09; 以数据位为8位(m)为例&#xff0c;编码位数为r&#xff0c;2^r>mr1 r最小为4 编码后位数为4812位 编码位为p1&#xff0c;p2 &#xff0c;p3, p4 p1掌控&#xff…

数据分析真的很火吗?真的有很多企业需要这样的岗位吗?求大佬指点。

“我是去年毕业的&#xff0c;因为疫情影响&#xff0c;整个就业环境都很不好&#xff0c;很多企业都裁员了。加上疫情三年基本都是玩过去&#xff0c;也没啥一技之长&#xff0c;就业就更难了。听说现在做数据分析的人很多&#xff0c;我身边的朋友都在转行做数据分析。 其实…

【2023/05/15】Rust

Hello&#xff01;大家好&#xff0c;我是霜淮子&#xff0c;2023倒计时第10天。 Share Rest belongs to the work as the eyelids to the eyes. 译文&#xff1a; 休息与工作的关系&#xff0c;正如眼睑与眼睛的关系。 Man is a born child,his power is the power of gro…

华为od题库汇总分享

​ 前言 最近有很多群友问塔子哥华为最新OD题库在哪里可以找。我索性就写篇文章介绍一下吧~。这里塔子哥还是要说一下&#xff0c;大家想进华为od还是要重视题库。因为根据无数群友&#xff0c;网友的反映。华为od就是从题库里抽题&#xff0c;不会有新题。只是每个季度题库会…

使用mapbox+turf.js完成迁徙图,流向图教程

以前对于迁徙图流向图这样的需求大多都是采用echarts这样的图标组件库做的。这篇文章跟大家分享一下如何使用webgis的技术方式实现迁徙图,流向图这样的专题地图。 首先我们要把思路捋清楚,迁徙图表示的是从一个点出发向多个点均有流向(这个流向用线条表示)或者是从多个地方…

利用GPU并行计算beta-NTI,大幅减少群落构建计算时间

1 先说效果 18个样本&#xff0c;抽平到8500条序列&#xff0c;4344个OTUs&#xff0c;计算beta-NTI共花费时间如下。如果更好的显卡&#xff0c;更大的数据量&#xff0c;节约的时间应该更加可观。 GPU&#xff08;GTX1050&#xff09;&#xff1a;1分20秒 iCAMP包 的bNTIn.p(…

你可能不需要「那么」担心,人工智能对你的工作造成威胁

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加&#xff1a;keeepdance&#xff0c;备注&#xff1a;chatgpt&#xff0c;拉你进群。 上周&#xff0c;AI似乎成为全互联网的焦点了。谷歌在2023IO开发者大会上&#xff0c…

MySQL之B+树索引的使用

前言 本文章收录在MySQL性能优化原理实战专栏&#xff0c;点击此处查看更多优质内容。 本文摘录自 ▪ 小孩子4919《MySQL是怎样运行的&#xff1a;从根儿上理解MySQL》 我们上一篇文章详细的了InnoDB存储引擎的B树索引&#xff0c;我们必须知道下边这些结论&#xff1a; 每个…