Sed编辑器

2023-10-30

目录

sed编辑器

命令格式:

常用选项:

常用操作:

打印内容:

使用地址:

​编辑

替换: 

插入:


sed编辑器

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

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

命令文本文件中。

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

•读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称

模式空间,pattern space)。

•执行:默认情况下,所有的sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed

命令 将会在所有的行上依次执行。

•显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都

被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

注意:默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变

化,除非是用重定向存储输出。

命令格式:

sed -e '操作' 文件1 文件2 ...

sed -n -e '操作' 文件1 文件2 ...

sed -f 脚本文件 文件1 文件2 ...

sed -i -e '操作' 文件1 文件2 ...

sed -e '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' a.txt

 sed -n -e '=' a.txt

 sed -n -e 'l' a.txt

sed -n -e '=;p' a.txt

sed -n -e '=' -e 'p' a.txt

sed -n '

> =

> p

> ' a.txt


使用地址:

sed编辑器有2种寻址方式:

1、以数字形式表示行区间

2、用文本模式来过滤出行

sed -n '1p' a.txt

sed -n '1p' a.txt

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

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

sed -n '1,+3p' a.txt     #打印1之后的连续3行,即1-4行

sed '5q' a.txt           #打印前5行信息后退出,q表示退出

sed -n 'p;n' a.txt      #打印奇数行;n表示移动到下一行

sed -n 'n;p' a.txt        #打印偶数行

用脚本显示奇偶行

 

 sed -n ‘2,${n;p}'   a.txt         #从第2行打印奇数行

sed -n '/root/p' passwd   #匹配文件中有root的内容

sed -n '/^a/p' passwd   #打印所有开头是a的内容

sed -n '/bash$/p' passwd    #打印所有结尾是bash的内容

sed -n '/ftp\|root/p' passwd   打印含有ftp或root的内容

sed -n '2,/nobody/p' passwd    从第二行打印到含有noboby的内容

sed -n '2,/nobody/=' passwd  #打印从第二行到含有noboby的内容的行号

sed -nr '/ro{1,}t/p' /etc/passwd    #-r表示支持扩展正则表达式

sed 'd' a.txt           #全删

sed '3d' a.txt               #就删第三行

sed '2,4d' a.txt             #删第二,第四行

sed '$d' a.txt                  #删除最后一行

sed '/^$/d' a.txt       #删除空行

sed '/nologin$/d' passwd              #删除以nologin结尾的内容

sed '/nologin$/!d' /etc/passwd        #“!”表示取反操作

sed '/two/,/four/d' a.txt        #从第一个位置打开行删除功能,到第二个位置关闭行删除功能


替换: 

行范围 s/旧字符串/新字符串/替换标记

4种替换标记:

数字:表明新字符串将替换第几处匹配的地方

g:表明新字符串将会替换所有匹配的地方

p:打印与替换命令匹配的行,与-n一起使用

w 文件:将替换的结果写到文件中

sed -n 's/root/admin/p' passwd   #把匹配到的第一个root替换为admin

sed -n 's/root/admin/2p' passwd    #替换第二次匹配到root

sed -n 's/root/admin/gp' passwd      #替换所有root

 sed -n 's/root//gp' passwd     #把匹配的root替换为空

sed -n '1,20 s/^/#/p' passwd    #把1到20行的前面加#

sed '/^root/ s/$/#/' passwd  #以root开头的内容把结尾替换成#

sed '/root/ s/^/#/' passwd    #把以root开头的内容的开头加上#

 sed -rn 's/.*root.*/#&/p' passwd  #表示将匹配到的整行文本以#开头进行注释,&表示匹配到的整行文本

sed -f c.sh a.txt    #对a.txt调用c.sh的规则

sed '1,20w out.txt' passwd  #将passwd的前二十行内容写入d.txt

sed '1,20 s/^/#/w d.txt' /passwd  #将passwd的前二十行的开头加#然后写入d.txt

sed -n 's/\/bin\/bash/\/bin\/csh/p' passwd  #将bin/bash替换为/bin/csh

sed -n 's!/bin/bash!/bin/csh!p' passwd        #使用“!”作为字符串分隔符

sed -i 's9\945\9\99\98\939g' e.txt        #将94599替换为9893


插入:

sed '/123/c ABC' a.txt   #把a.txt中的123替换为ABC
                         #"c"是sed命令中的替换操作符,表示将匹配到的行替换为指定的文本"ABC"

sed 'y/145/ABC/' a.txt   #使所有的1字符转换成A,所有的2字符转换成B,所有的3字符转换成C                     
                         #y是sed命令的一个操作符,表示进行字符替换。具体来说,它的作用是将a.txt文件中的所有字符1、4、5分别替换为A、B、C,然后将替换后的结果输出到标准输出

sed '1,3a ABC' a.txt   #在文本a.txt第1到第3行之间追加一行文本“ABC”

 sed '1i ABC' a.txt   #在a.txt文件的第一行前插入字符串"ABC"

 sed '5r /etc/resolv.conf' a.txt  #把etc/resolv.conf的内容插入a.txt的第五行
                                  #r的意思是将指定文件的内容读取并插入到当前正在处理的文件中的指定行之后 

sed '/root/{H;d};$G' passwd    #在passwd文件中找到包含字符串"root"的行,将该行的内容添加到模式空间中的缓冲区中,并删除该行。对于最后一行,使用$G命令将其添加到模式空间中的缓冲区中。最终,模式空间中的内容将包含所有以"root"开头的行,并且每个匹配行的下一行将与其一起输出。

sed '1,2H;3,4G' /etc/passwd            #将1、2行复制到3和4行的下面

 echo "111222333" | sed -r 's/(111)(222)/\2\1/'    #将字符 111 和 222 互换位置

 echo "111222333" | sed -r 's/^(.)(.*)(.)$/\3\2\1/'        #将第一个字符和最后一个互换位置

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sed编辑器 的相关文章

  • 在哪里可以找到并安装 pygame 的依赖项?

    我对 Linux 比较陌生 正在尝试安装 python 的 pygame 开发环境 当我运行 setup py 时 它说我需要安装以下依赖项 我找到并安装了其中之一 SDL 然而 其他人则更加难以捉摸 Hunting dependencie
  • Android 时钟滴答数 [赫兹]

    关于 proc pid stat 中应用程序的总 CPU 使用率 https stackoverflow com questions 16726779 total cpu usage of an application from proc
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • Pyaudio 安装错误 - “命令‘gcc’失败,退出状态 1”

    我正在运行 Ubuntu 11 04 Python 2 7 1 并想安装 Pyaudio 于是我跑了 sudo easy install pyaudio 在终端中 进程退出并显示以下错误消息 Searching for pyaudio Re
  • 如何将目录及其子目录中的所有 PDF 文件复制到一个位置?

    如何全部复制PDF文件从目录及其子目录到单个目录 实际上还有更多的文件 并且深度有些任意 假设四个目录的最大深度是公平的 我想这些文件需要重命名 如果a pdf例如 位于多个目录中 因为我会adding https ebooks stack
  • NPTL 和 POSIX 线程有什么区别?

    NPTL 和 POSIX 线程之间的基本区别是什么 这两者是如何演变的 POSIX 线程 pthread 不是一个实现 它是几个函数的 API 规范 纸上的标准 英文 其名称以pthread 以及定义在
  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec
  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • 将 jar 作为 Linux 服务运行 - init.d 脚本在启动应用程序时卡住

    我目前正在致力于在 Linux VM 上实现一个可运行的 jar 作为后台服务 我已经使用了找到的例子here https gist github com shirish4you 5089019作为工作的基础 并将 start 方法修改为
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • 我不明白 execlp() 在 Linux 中如何工作

    过去两天我一直在试图理解execlp 系统调用 但我还在这里 让我直奔主题 The man pageexeclp 将系统调用声明为int execlp const char file const char arg 与描述 execl exe
  • “make install”将库安装在 /usr/lib 而不是 /usr/lib64

    我正在尝试在 64 位 CentOS 7 2 上构建并安装一个库 为了这个目的我正在跑步 cmake DCMAKE BUILD TYPE Release DCMAKE INSTALL PREFIX usr DCMAKE C COMPILER
  • 按进程名称过滤并记录 CPU 使用情况

    Linux 下有选项吗顶部命令 https www man7 org linux man pages man1 top 1 html我可以在哪里按名称过滤进程并将每秒该进程的 CPU 使用情况写入日志文件 top pgrep 过滤输出top

随机推荐

  • Java通过两点经纬度和范围距离计算范围四个顶点的经纬度

    参考博文 https blog csdn net zengmingen article details 68490497 private static final double mile 1609 344 米 英里换算 通过起点 终点的经纬
  • SQL数据库:数据查询

    数据查询 语句格式 SELECT子句 指定要显示的属性列 FROM子句 指定查询对象 基本表或视图 WHERE子句 指定查询条件 GROUP BY子句 对查询结果按指定序列的值分组 比如说男的一组 女的一组 该属性列值相等的元祖为一个组 通
  • python读入2个正整数a和b_C/C++知识点之C语言解题:读入两个小于100的正整数A和B,计算A+B...

    本文主要向大家介绍了C C 知识点之C语言解题 读入两个小于100的正整数A和B 计算A B 通过具体的内容向大家展示 希望对大家学习C C 知识点有所帮助 题目描述 读入两个小于100的正整数A和B 计算A B 需要注意的是 A和B的每一
  • STC15单片机实战项目 - 项目需求

    以经典的51内核单片机设计一款产品 功能如下 1 采用宏晶的STC15L2K32S2 LQFP32 2k SRAM 32k ROM 目的 选用STC15系列1T的经典51内核单片机 资源丰富 2 设计1个运行指示灯 工作时 间隔1s闪烁 目
  • 人工智能及其在工业领域的三大应用

    人工智能是一门新的技术学科 研究和开发用于模拟人类智慧扩充套件和扩充套件的理论 方法 技术和应用系统 人工智能研究的目标 是让机器执行一些需要智慧人类完成的复杂任务 也就是说 我们希望这台机器能取代我们 解决一些复杂的任务 不仅是重复的机械
  • 数据库系统概论——第九章 关系查询处理和查询优化

    一 关系数据库系统查询处理 1 查询处理步骤 1 查询分析的任务 对查询语句进行扫描 词法分析和语法分析 词法分析 从查询语句中识别出正确的语言符号 语法分析 进行语法检查 2 查询检查的任务 1 合法权检查 根据数据字典检查语句中的数据库
  • 【linux】cpu过高解决方法

    CPU过高情况 1 使用top命令查看cpu的进程占用情况 2 发现11443的进程占比过高 通过top Hp 11443 查看线程的占用情况 发现11459 11460 11461线程的占比过高 解决swap占用CPU 设置vm swap
  • # Linux 升级g++7.5.0

    Linux 升级g 7 5 0 最近使用需要使用c 14标准 发现自己的编译器版本为gcc 4 8 只支持c 11标准 因此进行升级 升级为可以支持c 17的gcc7 5 0 关于编译器的版本支持问题可以到gcc的官方文档进行查询 下面开始
  • 【机器学习杂烩】投票(Voting)算法在分类问题上的应用(一口气实现Logistic 回归、SVM、KNN、C4.5 决策树、 Adaboost、GBDT 和随机森林,并集成起来)

    投票算法简介 投票是在分类算法中广泛运用的集成学习算法之一 投票主要有硬投票和软投票 两种 硬投票即各基分类器权重相同的投票 其原理为多数投票原则 如果基分类器 的某一分类结果超过半数 则集成算法选择该结果 若无半数结果则无输出 软投票 的
  • (一)Windows下tensorflow安装 win64+Python3.5

    2016年11月29日 TF官方宣布0 12版tensorflow支持原生windows操作系统 不在需要通过Docker进行安装 tf初学者 windows重度依赖用户 可以按照下面这种可行的安装方法进行 一 安装Python 1 通过P
  • JavaWeb远程调试

    目录 远程调试 Centos JDK 工程 启动配置 IDE连接 调试 停止调试 远程调试原理 原理 三种通信方式 Debug参数 第1种Socket Attach调试方法 第2种Socket Listen调试方法 第3种调试方法 断点分类
  • Go_实现HTTP请求和响应

    请求 HTTP 超文本传输协议 请求报文由请求行 请求头部 空行 请求包体4个部分组成 如下图所示 请求行 请求行由请求方法 URL HTTP协议版本组成 它们之间使用空格隔开 常用的HTTP请求方法有GET POST请求 GET GET请
  • Java序列化与JNDI注入

    现阶段公司会进行季度的安全巡检 扫描出来的 Java 相关漏洞 无论是远程代码执行 还是 JNDI 注入 基本都和 Java 的序列化机制有关 本文简单梳理了一下序列化机制相关知识 解释为什么这么多漏洞都和 Java 的序列化有关 以及后续
  • Python:三种格式化字符串的方式,附:小题案例+知识点

    python中常见的格式符 格式符 格式说明 c 将对应的数据格式转化为字符 s 将对应的数据格式化为字符串 d 将对应的数据格式化为整数 u 将对应的数据格式化为无符号整型 o 将对应的数据格式化为八进制数据 x 将对应的数据格式化为十六
  • Python爬取电影信息:Ajax介绍、爬取案例实战 + MongoDB存储

    Ajax介绍 Ajax Asynchronous JavaScript and XML 是一种用于在Web应用程序中实现异步通信的技术 它允许在不刷新整个网页的情况下 通过在后台与服务器进行数据交换 实时更新网页的一部分 Ajax的主要特点
  • 机器学习之文本分类(附带训练集+数据集+所有代码)

    我本次对4类文本进行分类 所有截图代码和数据集最后附带免费下载地址 主要步骤 1 各种读文件 写文件 2 使用jieba分词将中文文本切割 3 对处理之后的文本开始用TF IDF算法进行单词权值的计算 4 去掉停用词 5 贝叶斯预测种类 文
  • 【fpga里Verilog语言的小知识点】

    提示 小白撰写 如有错误希望指出 目录 前言 总结 前言 记录一下学习fpga里Verilog语言的小知识点 持续更新 提示 以下是本篇文章正文内容 1 A B C D 是一个条件运算符 含义是如果 B 为 TRUE 则把 C 连线 A 否
  • C语言实现扫雷(含展开,附源码)

    我相信在做的各位都是玩过扫雷的 游戏玩法就不赘述了 直接进入主题 先思考后敲代码 首先 我将扫雷分为两个棋盘 一个放雷 另一个为玩家猜测盘 这就有同学问了 设置一个棋盘不就完了 这样不就搞复杂了吗 先简短的回答这位同学的问题 因为我的考虑是
  • Docker18:容器互联----link (给新手玩的,进阶方法是 自定义网络)

    容器互联 link 思考一个场景 我们编写了一个微服务 database urla ip 项目不重启 数据库ip换掉了 我们希望可以处理这个问题 可以 名字来进行访问容器 若能实现就可以实现高可用 探究 inspect 其实这个 tomca
  • Sed编辑器

    目录 sed编辑器 命令格式 常用选项 常用操作 打印内容 使用地址 编辑 替换 插入 sed编辑器 sed是一种流编辑器 流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流 sed编辑器可以根据命令来处理数据流中的数据 这些