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

来源:互联网 发布:知乎日报 吐槽精选 编辑:程序博客网 时间:2024/05/01 13:58

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 Workflow

读取

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

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 常州出生证丢了怎么办 分公司就俩个人怎么办 分公司就三个人怎么办 转账支票作废后怎么办 干组织不是党员怎么办 宾馆客人逃房费怎么办 cad图太大打不开怎么办 cad文字输入不了怎么办 word打不了汉字怎么办 电脑浏览器卡顿怎么办 文档里输入不了怎么办 淘宝退款卖家不处理怎么办 抵押合同丢了怎么办 抵押合同丢失了怎么办 发票货物名称多怎么办 发票上少打一个字怎么办 发票名称带星号怎么办 小贷太多还不上怎么办 生日当天买保险怎么办 我挪用公司货款怎么办 车辆改名字保险怎么办 工伤报案周六日怎么办 五菱宏光s1门下沉怎么办 新手机版本更新怎么办 戴尔电脑开机黑屏怎么办 淘宝退货不发货怎么办 铝被酸腐蚀怎么办 新娘头饰氧化了怎么办 合金饰品变黑了怎么办 麻醉机fico2升高怎么办 快递被恶意投诉怎么办 顺风快递收件人拒收怎么办 手机联系人没了怎么办 收件人号码错了怎么办 收件人写错了怎么办 快递联系不到收件人怎么办 小孩烫伤有水泡怎么办 被烫伤的疤痕怎么办 微店别人下单后怎么办 月经超了七天怎么办 收件人不在指定地址怎么办