1 Sed简介

Sed(Stream EDitor)为Uninx系统上提供将编辑工作自动化的编辑器,使用者无需直接编辑数据。使用者可以利用Sed所提供的20多种不同的函数,进行不同的编辑动作。

Sed是以为单位编辑文件,所以也称为行编辑器(Line editor)。

1.1 什么时候需要使用Sed

  • 在修改文档时,需要重复进行的动作,可以使用Sed进行编辑。比如统一修改人名等。
  • 一个文档需要多个不同操作的动作,可以用Sed一次执行。比如:Sed可以一次执行文档中的空白行删除、替换字符串、在第几行添加内容等。

1.2 Sed 所能做的编辑动作

  • delete--删除
  • change--改变
  • append--添加
  • insert--插入
  • 合并
  • 交换文件中的数据行
  • 读入其他文件的数据到当前文件中
  • substuite--替换
  • 转换其中的字母
  • .....

1.3 Sed 工作过程

如同其他Unix命令,Sed由标准输入读入编辑文件并由标准输出送出结果。

  • 1.Read a line from input stream
  • 2.Excute sed commands on a line
  • 3.Display result on output stream

    read -- Sed从输入流(文件、管道或者标准输入)读取一行并将其存储在其内部缓冲区中,该内部缓冲区称为模式缓冲区。

    execute -- 将所有Sed命令顺序应用到模式缓冲区中。

    display -- 将(已经修改的内容)发送到输出流。发送数据后,模式缓冲区将清空。

1.3.1 Sed 工作流程示例

//展示test.txt文件的内容,效果类似于cat命令
sed '' test.txt
/*
在上面这句话中,test.txt是输入的文件名,之前的单引号表示Sed命令。
*/

上面这句话的运行流程:

首先,sed从输入文件test.txt中读取一行,并将其存储在模式缓冲区中

然后,将sed命令应用于模式缓冲区。在上面的示例中没有sed命令,因此对于模式缓冲区不执行任何操作。

最后,删除并在标准输出上打印模式缓冲区的内容。

sed '' 

Hello Word
Hello Word

如果没有文件输入,那么sed会接受命令行的标准输入,然后用命令进行处理,之后进行输出。退出局Sed回话模式,使用ctrl+D键。

01-Sed简介的更多相关文章

  1. 01 HDFS 简介

    01.HDFS简介 大纲: hadoop2 介绍 HDFS概述 HDFS读写流程 hadoop2介绍 框架的核心设计是HDFS(存储),mapReduce(分布式计算),YARN(资源管理),为海量的 ...

  2. Sed简介 (转)

    Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓 ...

  3. 01 . RabbitMQ简介及部署

    RabbitMQ简介 ​ MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它 ...

  4. 01 . Memcached简介及部署

    Memcached简介 memcached是一个自由开源,高性能,分布式内存对象存储系统 基于内存的key-valued存储,用来存储小块的任意数据(字符串,对象) 他是一个简洁的key-value存 ...

  5. 01 . Redis简介及部署主从复制

    简介 Remote Dictionary Server, 翻译为远程字典服务, Redis是一个完全开源的基于Key-Value的NoSQL存储系统,他是一个使用ANSIC语言编写的,遵守BSD协议, ...

  6. 01 . Mysql简介及部署

    Mysql数据库简介 什么是数据? ​ 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材,数据是信息的表现形式和载体,可以是符号,文字,数字,语音,图 ...

  7. 01 . GitLab简介及环境部署

    GitLab简介 最初,该产品名为GitLab,是完全免费的开源软件,按照MIT许可证分发. 2013年7月,产品被拆分为:GitLabCE(社区版)和GitLabEE(企业版),当时,GitLabC ...

  8. JavaScript学习01 语言简介、基本使用和变量声明

    JavaScript语言简介.基本使用和变量声明 JavaScript是网景(Netscape)公司开发的一种基于客户端浏览器.面向对象.事件驱动式的网页脚本语言. JavaScript的前身叫Liv ...

  9. 笨鸟先飞之ASP.NET MVC系列之过滤器(01过滤器简介)

    过滤器 什么是过滤器? 过滤器(Filter) 主要的作用大致可以理解为把我们的附加逻辑注入到MVC框架的请求处理. 在ASP.NET MVC的请求处理中一种有19个管道事件分别是 BeginRequ ...

  10. Scala - 快速学习01 - Scala简介

    Scala简介 Scala(Scalable Language)是一门多范式(multi-paradigm)编程语言,Scala的设计吸收借鉴了许多种编程语言的思想,具备面向对象编程.函数式编程等特性 ...

随机推荐

  1. HTML基础知识(1)常用标签的使用 h、p、img、meta、a、iframe...

    文章目录 1.html简介 2.html注释 3.标签的属性 3.1 代码 3.2 测试结果 4.常用的标签 4.1 代码 4.2 测试结果 5.实体 5.1 代码 5.2 测试结果 6.图片引入 6 ...

  2. MassTransit | .NET 分布式应用框架

    引言 A free, open-source distributed application framework for .NET. 一个免费.开源的.NET 分布式应用框架. -- MassTran ...

  3. Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵

    Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵 Redis Cluster 集群相关配置,使用集群方式的你必须重视和知晓.别嘴上原理说的头头是道,而集群有哪些配置?如何配置让集 ...

  4. 10.APIView视图

    from rest_framework import status from rest_framework.response import Response from snippets.models ...

  5. 三、Python语法介绍

    三.Python语言介绍 3.1.了解Python语言 Python 是1989 年荷兰人 Guido van Rossum (简称 Guido)在圣诞节期间为了打发时间,发明的一门面向对象的解释性编 ...

  6. 5 why 分析法,一种用于归纳抽象出解决方案的好方法

    最近在看了<微信背后的产品观 - 张小龙手抄版>,其中有段话如下: 用户需求是零散的,解决方案是归纳抽象的过程 那如何归纳抽象呢?是否有一定的实践方法论呢?经过一轮探讨和学习,有这些答案: ...

  7. rocky二进制安装mysql8.0

    (ubuntu的有点问题) 点击查看代码 #!/bin/bash Version=`cat /etc/os-release |awk -F'"| ' '/^NAME/{print $2}'` ...

  8. Codeforces Round #832 (Div. 2) A~C题解

    目录 A B C A 思路:这个题的话我们把负数和整数分别求出来,比较绝对值的大小,用较大的那个减去较小的那个就可以了. #include <cstring> #include <i ...

  9. 用于数据科学的顶级 C/C++ 机器学习库整理

    用于数据科学的顶级 C/C++ 机器学习库整理 介绍和动机--为什么选择 C++ C++ 非常适合 动态负载平衡. 自适应缓存以及开发大型大数据框架 和库.Google 的MapReduce.Mong ...

  10. jdk线程池ThreadPoolExecutor工作原理解析(自己动手实现线程池)(一)

    jdk线程池ThreadPoolExecutor工作原理解析(自己动手实现线程池)(一) 线程池介绍 在日常开发中经常会遇到需要使用其它线程将大量任务异步处理的场景(异步化以及提升系统的吞吐量),而在 ...