网站大量收购闲置独家精品文档,联系QQ:2885784924

通用线程--sed实例.PDFVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
通用线程--sed实例

通用线程 -- sed 实例 在本文章系列中,Daniel Robbins 将为您演示如何使用功能十分强大(但常被 遗忘)的 UNIX 流编辑器 sed。sed 是用批处理方式编辑文件或以十分有效的方 式创建 shell 脚本以修改现有文件的理想工具。 挑选编辑器 在 UNIX 世界中有很多文本编辑器可供我们选择。思考一下-- vi、emacs 和 jed 以及很多其 它工具都会浮现在脑海中。我们都有自己已逐渐了解并且喜爱的编辑器(以及我们喜爱的组 合键)。有了可信赖的编辑器,我们可以轻松处理任何数量与 UNIX 有关的管理或编程任务。 虽然交互式编辑器很棒,但却有其限制。尽管其交互式特性可以成为强项,但也有其不足之 处。考虑一下需要对一组文件执行类似更改的情形。您可能会本能地运行自己所喜爱的编辑 器,然后手工执行一组烦琐、重复和耗时的编辑任务。然而有一种更好的方法。 进入 sed 如果可以使编辑文件的过程自动化,以便用 “批处理”方式编辑文件,甚至编写可以对现有 文件进行复杂更改的脚本,那将太好了。幸运的是,对于这种情况,有一种更好的方法 -- 这种更好的方法称为 sed。 sed 是一种几乎包括在所有 UNIX 平台(包括 Linux)的轻量级流编辑器。sed 有许多很好 的特性。首先,它相当小巧,通常要比您所喜爱的脚本语言小很多倍。其次,因为 sed 是 一种流编辑器,所以,它可以对从如管道这样的标准输入接收的数据进行编辑。因此,无需 将要编辑的数据存储在磁盘上的文件中。因为可以轻易将数据管道输出到 sed,所以将 sed 用作强大的 shell 脚本中长而复杂的管道很容易。试一下用您所喜爱的编辑器去那样做。 GNU sed 对 Linux 用户来说幸运的是,最好的 sed 版本之一恰好是 GNU sed,其当前版本是3.02。 每一个 Linux 发行版都有(或至少应该有)GNU sed。GNU sed 之所以流行不仅因为可以自 由分发其源代码,还因为它恰巧有许多对 POSIX sed 标准便利、省时的扩展。另外,GNU 没有 sed早期专门版本的很多限制,如行长度限制 -- GNU 可以轻松处理任意长度的行。 必威体育精装版的 GNU sed 在研究这篇文章之时我注意到:几个在线 sed 爱好者提到 GNU sed 3.02a。奇怪的是,在 (有关这些链接,请参阅参考资料)上找不到 sed 3.02a,所以,我只得在别 处寻找。我在 的 /pub/sed 中找到了它。于是我高兴地将其下载、编译然 后安装,而几分钟后我发现必威体育精装版的 sed 版本却是 3.02.80 -- 可在 上 3.02a 源代码旁边找到其源代码。安装完 GNU sed 3.02.80 之后,我就完全准备好了。 正确的 sed 在本系列中,将使用 GNU sed 3.02.80。在即将出现的本系列后续文章中,某些 (但非常少) 最高级的示例将不能在 GNU sed 3.02 或 3.02a 中使用。如果您使用的不是 GNU sed,那 么结果可能会不同。现在为什么不花些时间安装 GNU sed 3.02.80 呢?那样,不仅可以为 本系列的余下部分作好准备,而且还可以使用可能是 目前最好的 sed。 sed 示例 sed 通过对输入数据执行任意数量用户指定的编辑操作( “命令”)来工作。sed 是基于行 的,因此按顺序对每一行执行命令。然后,sed 将其结果写入标准输出 (stdout),它不修 改任何输入文件。 让我们看一些示例。头几个会有些奇怪,因为我要用它们演 sed 如何工作,而不是执行任 何有用的任务。然而,如果您是 sed新手,那么理解它们是十分重要的。下面是第一个示例: $ sed -e d /etc/services 如果输入该命令,将得不到任何输出。那么发生了什么?在该例中,用一个编辑命令 d 调用 sed。sed 打开 /etc/services 文件,将一行读入其模式缓冲区,执行编辑命令 (“ 删除行”),然后打印模式缓冲区 (缓冲区已为空)。然后,它对后面的每一行重复这些步 骤。这不会产生输 出,因为 d 命令除去了模式缓冲区中的每一行 ! 在该例中,还有几件事要注意。首先,根本没有修改/etc/services。这还是因为 sed 只读 取在命令行指定的文件,将其用作输入--它不试图修改该文件。第二件要注意的事是 sed 是面向行的。d命令不是简单地告诉sed 一下子删除所有输入数据。相反,sed逐行将 /etc/se

文档评论(0)

jyf123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6153235235000003

1亿VIP精品文档

相关文档