Sed表示流编辑器(Stream Editor)的缩写。这是一个简单但功能强大的工具,分析文本,并无缝地转换它。 SED是在1973-1974年由贝尔实验室的李E. McMahon开发。如今,它运行在所有主要的操作系统。

McMahon编写了一个通用的面向行的编辑器,它最终成为sed。sed借用语法和ed编辑许多有用的功能。自成立开始,就对正则表达式有所支持。sed接受来自文件以及管道的输入。此外,它也可以接受来自标准输入的数据流的输入。

sed是自由软件由基金会(FSF)维护,它是由GNU/ Linux分发。因此,它通常被称为GNU sed的。对于新手用户,sed语法看起来神秘。但是,一旦熟悉了它的语法,就可以使用sed的几行脚本解决许多复杂的任务。

sed典型用途

sed可以有许多不同的方式使用,例如:

  • 文本替换
  • 选择性打印的文本文件
  • 一个就地文本文件的编辑
  • 文本文件的非交互式的编辑等等。

本章介绍如何在GNU/ Linux系统中设置sed环境。

安装使用软件包管理器

一般情况下,sed默认提供在大多数的GNU/ Linux发行版。使用该命令,以确定其是否存在于您的系统上。如果没有,那么在基于Debian GNU/ Linux可以使用apt包管理器,如下所示安装sed:

[root]# sudo apt-get install sed 

安装后,确保sed可以通过命令行访问。

[root]# sed --versio

执行上面的代码,会得到如下结果:

sed (GNU sed) 4.2.2
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.htmll>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.
Be sure to include the word "sed" somewhere in the "Subject:" field.

同样,基于GNU/Linux的RPM安装sed,用yum包管理器,如下所示:

[root]# yum -y install sed

安装后,确保 sed 可以通过命令行访问。

[root]# sed --version

执行上面的代码,会得到如下结果:

GNU sed version 4.2.1
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to:<bug-gnu-utils@gnu.org>.
Be sure to include the word "sed" somewhere in the "Subject:" field.

从源代码安装

由于GNU sed是GNU计划的一部分,它的源代码都可以免费下载。我们已经看到了如何使用软件包管理器安装sed。现在,了解如何从源代码安装sed。

下面安装适用于任何的GNU/Linux软件,和大多数其他可自由使用的程序。下面是安装步骤:

第1步 - 从一个真实的地方下载的源代码。命令行实用程序wget服务于这个目的。

[root]# wget ftp://ftp.gnu.org/gnu/sed/sed-4.2.2.tar.bz2

第2步 - 解压缩和解压下载的源代码。

[root]# tar xvf sed-4.2.2.tar.bz2 

第3步 - 更改进入目录并运行配置。

[root]# ./configure 

第4步 - 一旦成功完成,配置生成Makefile文件。编译源代码,使用 make命令。

[root]# make

第5步 - 可以运行测试套件,以确保构建是干净的。这是一个可选步骤。

[root]# make check 

第6步 - 最后,安装sed实用工具。请确保有超级用户的权限。

[root]# sudo make install 

我们已经成功编译并安装sed。通过执行 sed 命令,作如下验证:

[root]# sed --version

执行上面的代码,会得到如下结果:

sed (GNU sed) 4.2.2
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.htmll>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.
Be sure to include the word "sed" somewhere in the "Subject:" field.

本章将解释sed究竟如何工作的。要成为一个专家级的sed用户,需要知道它的内部执行和结构。sed遵循一个简单的工作流:读取,执行和显示。下图描绘了工作流程。

读取

sed从输入流(文件,管道,或标准输入)读取,并将其存储在其内部的缓冲模式称为缓冲行。

执行

所有sed命令顺序地对模式缓冲区使用。默认情况下,sed命令都适用于所有行(全局),除非指定行寻址。

显示

sed发送(修改)的内容到输出数据流。在发送数据后,模式缓冲器是空的。这个过程一直重复,直到文件被耗尽。

示例

让我们创建一个文本文件quote.txt包含引用著名作家Paulo Coelho。

[jerry]$ vi quote.txt
There is only one thing that makes a dream impossible to achieve: the fear of failure. - Paulo Coelho, The Alchemist

为了了解sed的工作流程,让我们使用sed显示该文件的内容quote.txt。这个例子模仿cat命令。

[jerry]$ sed '' quote.txt

当执行上面的代码,就会产生下面的结果。

There is only one thing that makes a dream impossible to achieve: the fear of failure.

在上面的例子中,quote.txt输入文件名和在此之前,有一对单引号的暗示sed 命令。让我们解读此操作。

第一sed从输入文件quote.txt读取并将其存储在它的模式缓冲区行。然后它适用sed关于模型缓冲区命令。在我们的例子中没有sed 命令在那里,因此是对模式缓冲区未进行任何操作。最后删除,并打印在标准输出模式缓冲区中的内容。是不是很简单?

在下面的例子中,sed 接受来自标准输入流输入。

[jerry]$ sed ''

当执行上面的代码,它会提示我们输入从标准输入一些文字。因此,让我们进入一个文本行,如下所示:

There is only one thing that makes a dream impossible to achieve: the fear of failure.

输入该行后,当我们按下输入产生以下结果:

There is only one thing that makes a dream impossible to achieve: the fear of failure.

要从使用的sed会话退出,按下键盘上的 ctrl-D (^D).

from: http://www.yiibai.com/sed/sed_useful_recipes.html

Sed教程(一):简介、环境设置、工作流程相关推荐

  1. DELMIA软件教程之软件环境设置

    打开DELMIA软件,在菜单栏中点击[工具],弹出的下拉菜单中选择[选项]. 在弹出的选项对话框中进行如下设置: 必设项 1.选项[常规]→[显示]→[浏览]中勾选[显示操作边界]可进行鼠标拖拽移动单 ...

  2. Blender图解教程:骨骼动画基本工作流程

  3. 实施:GitHub + MarkDown 文档系统的工作环境部署及工作流程说明 | 技术传播

    前段时间有幸参与了开源社区的活动,并且借由 Apache Pulsar 项目实践了 GitHub + MarkDown 的文档开发.在与开源社区的童鞋进行交流的过程中了解到,对于非技术专业的TCer, ...

  4. 关于工作流程的一些文章

    关于工作流程的一些文章 自来水公司是典型的流程型企业,其主要生产系统包括水厂的制水系统和管网供水系统两部分[1],CZ-CIMS就是根据供水企业CIMS的应用实践而设计的.实施CIMS的关键是集成,而 ...

  5. githooks_使用Githooks改善团队的开发工作流程

    githooks by Daniel Deutsch 由Daniel Deutsch 使用Githooks改善团队的开发工作流程 (Improve your team's development wo ...

  6. 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 :  -- u-boo ...

  7. java mvc模式工作流程_SpringMVC的简介和工作流程

    一.简介 Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.Spri ...

  8. Eureka工作原理(Eureka简介Eureka ServerEureka Client自我保护机制分布式系统中的CAP理论Eureka 工作流程)

    一.Eureka简介 Eureka Server(注册中心,相当于zookeeper) Eureka Client: Provider Consumer 多个Eureka就叫集群.集群之间会定时通过r ...

  9. keyshot手机渲染教程_渲染基础教程,六个步骤教你KeyShot工作流程

    渲染基础教程,六个步骤教你KeyShot工作流程 想要产品效果好,渲染步骤是必须的,而且你需要注意好材质和贴图,尤其是在KeyShot渲染设置当中,你一定要设置正确.不少小伙伴对于KeyShot渲染神 ...

最新文章

  1. 报错解决:ad NaCl helper startup ack (0 bytes)
  2. 拒绝从入门到放弃_《Openstack 设计与实现》必读目录
  3. 探子报!双十一紧急军情!!!
  4. TK:绘制BoundaryEdges边界边用法实战
  5. python 第三课 第一个python程序
  6. Java并发编程的基础-线程的终止
  7. 大华webplugin控件无法安装_大华监控平台SmartPSS如何上电视墙,一文包你学会
  8. MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established
  9. 06-CABasicAnimation基础核心动画
  10. BAT文件命名中含有英文括号运行出错
  11. canoco5冗余分析步骤_基因富集分析|理解
  12. 插头DP题目泛做(为了对应WYD的课件)
  13. 最快理解使用CSS弹性盒子
  14. C语言实现扫雷游戏(详解)
  15. c# NPOI按模板导出
  16. Python爬虫自学系列(一)
  17. Linux内核信号杀死内核线程,linux内核线程对信号的处理过程.
  18. 雅俗共享的微信小程序《老子探秘》,大家评价一下好坏
  19. 可以模拟人工操作的软件;如访问网页,在网页中自动获取固定信息等
  20. 2020年教师计算机培训计划,2020年教师继续教育个人学习计划(精选3篇)

热门文章

  1. 他用五年研究百位百万富翁生活习惯 结果很震撼
  2. 如何通过github提升自己
  3. JavaScript社区开发者调查:服务端JS盛行 AngularJS使用者最多
  4. 高并发编程-线程通信_使用wait和notify进行线程间的通信
  5. 实战SSM_O2O商铺_39【前端展示】首页轮播图和一级商铺Dao+Service+Controller层的实现
  6. clockdiff-检测两台linux主机的时间差
  7. linux图形图像三剑客,就linux三剑客简单归纳
  8. Java对异常处理或抛出之后,后面代码会不会再执行?
  9. c语言形参的隐含存储类型,C存储类型
  10. python 状态机教程_python 实用工具状态机transitions