当前位置: 首页 > news >正文

sed相关知识

目录

1、sed是什么

2、sed的原理

3、sed 命令常见用法

3.1 简版理解命令选项

3.2 sed 命令用法示例


1、sed是什么

sed 命令是利用脚本来处理文本文件。它可以依照脚本的指令来处理、编辑文本文件。主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

2、sed的原理

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

读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模 式空间,pattern space)。

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

显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。 在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

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

读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模 式空间,pattern space)。

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

显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。 在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

注意:默认情况下所有的 sed 命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除 非是用重定向存储输出。

3、sed 命令常见用法

sed [选项] '操作' 参数 sed [选项] -f scriptfile 参数

3.1 简版理解命令选项

选项 含义

-e 进行多次编辑

-n 取消默认输出

-f 指定sed文件名

-i 直接在源文件中修改

-r 使用扩展正则表达式

sed常用命令动作

命令动作 含义

p  打印输出

d  删除指定行

i  在指定行之前插入内容

a  在指定行后面插入内容

c  替换指定行所有内容

s  搜索替换

3.2 sed 命令用法示例

以 demo 文件为例进行演示。

3.3.1 输出符合条件的文本(p 表示正常输出)

sed -n 'p' demo      #输出所有行跟cat demo输出效果一样

sed -n '3p' 

sed -n '/the/p' demo      #输出包含the的行

sed -n '4,/the/p' demo      #输出从第四行到出现the的行

sed -n '/^PI/p' demo      #输出以PI开头的行

sed -n '/[0-9]$/p' demo      #输出以数字结尾的行

sed -n '/\<wood\>/p' demo      #输出包含单词wood的行

3.3.2 删除符合条件的文本(d)

因为后面的示例还需要使用测试文件 demo,所以在执行删除操作之前需要先将测试文件备份。以下示 例分别演示了 sed 命令的几种常用删除用法。

下面命令中 nl 命令用于计算文件的行数,结合该命令可以更加直观地查看到命令执行的结果

nl demo|sed '3d'      #删除第三行

nl demo|sed '3,5d'      #删除第三到五行

nl demo|sed '/cross/d'      #删除包含cross的行

sed '/^[a-z]/d' demo      #删除以小写字母开头的行

sed '/\.$/d' demo      #删除所有以.结尾的行

去除行尾的空格?

3.3.3 替换符合条件的文本 在使用 sed 命令进行替换操作时需要用到 s(字符串替换)、c(整行/整块替换)、y(字符转换) 命令选项,常见的用法如下所示。

sed 's/the/THE/' demo      #将所有行第一个the用THE替代

sed 's/l/L/2' demo      #将所有行中第二个l替换成L

sed 's/the/THE/g' demo      #将所有行中的所有the替换为THE

sed 's/o//g' demo      #将所有行的所有o替换为空字符串,即删除所有o

sed 's/^/#/' demo      #在所有行的行首插入#

sed 's/$/EOF' demo      #在所有行的行尾添加EOF

sed '3,5s/the/THE/g' demo      #将第三到五行的所有the替换为THE

sed '/the/s/o/O/g' demo      #将所有含the的行中的所有o替换为O

3.3.4 迁移符合条件的文本 在使用 sed 命令迁移符合条件的文本时,常用到以下参数

H:复制到剪贴板

d:删除模式空间内容,开始下一个循环(不输出当前行)

g、G:将剪贴板中的数据覆盖/追加至指定行

w:保存为文件

r:读取指定文件

a:追加指定内容。具体操作方法如下所示

I,i 忽略大小写

sed 'the/{H;d};$G/' demo      #将所有行中含the的行复制并且删除,然后粘贴到末行

sed '/the/{H;d};17G' demo      #将所有行中含the的行复制并且删除,粘贴到第17行后,因为实例文本并没有17行,所以没有显示

sed '/the/w out.file' demo      #将所有行中含the的行保存在out.file文件中

sed '/the/r /etc/hostname' demo      #在含the的行后插入主机名

sed '3a黄焖鸡' demo      #在第三行后插入黄焖鸡

sed '/the/a黄焖鸡' demo      #在所有含the的行后插入黄焖鸡

sed '3a黄焖鸡\n兰州拉面' demo      #在第三行后插入黄焖鸡和兰州拉面

3.3.5 使用脚本编辑文件

使用 sed 脚本将多个编辑指令存放到文件中(每行一条编辑指令),通过“-f”选项来调用。

例如执行以下命令即可将第 1~5 行内容转移至第 16 行后。

vim opt.list 

sed -f opt.list demo

http://www.xdnf.cn/news/1431415.html

相关文章:

  • 国行 iPhone17 会支持 eSIM 吗?最新爆料与区别解读
  • 华晨宇火星演唱会苏州站连唱三晚 万人狂欢共度浪漫七夕
  • 便携式显示器怎么选?:6大关键指标全解析
  • Windows 命令行:父目录与子目录
  • 科研绘图(二):R 语言实现小鼠脑图谱 3D 渲染,附完整代码与数据获取指南
  • 【Datawhale之Happy-LLM】3种常见的decoder-only模型——Github最火大模型原理与实践教程task07
  • C++的演化历史
  • C语言精选100道编程题(附有图解和源码)
  • B2B营销面临的一些主要问题
  • PyTorch实战——GoogLeNet与Inception详解
  • 【AI - nlp】Transformer输入部分要点
  • 无人机小尺寸RFSOC ZU47DR板卡
  • 无人机GPS悬停模块技术解析
  • Swift 解法详解:LeetCode 369《给单链表加一》
  • HTML应用指南:利用POST请求获取全国便利蜂门店位置信息
  • PyTorch 面试题及详细答案120题(106-115)-- 理论与拓展
  • Docker零基础入门指南
  • 两台电脑通过网线直连共享数据,设置正确,却互相ping不通的解决方法
  • 【设计模式】通俗讲解设计模式的七大原则
  • Linux——简单线程池封装案例
  • Sping Web MVC入门
  • 【机器学习深度学习】向量检索到重排序:RAG 系统中的优化实践
  • 关于ANDROUD APPIUM安装细则
  • 分页功能设计
  • MYSQL配置复制拓扑知识点
  • 【54页PPT】数字化转型数据中台解决方案(附下载方式)
  • spring boot 整合AI教程
  • 解析ELK(filebeat+logstash+elasticsearch+kibana)日志系统原理以及k8s集群日志采集过程
  • Unity学习----【数据持久化】二进制数据(五)--由Excel自动生成数据结构类与二进制文件
  • 【常见的几款棋牌室计时软件】佳易王棋牌室计时计费软件大众版,佳易王棋牌室计时计费高级版,两款软件有何不同,适配不同场景需求#软件具体教程详解