当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 2001 年 10 月 在本文章系列中,Daniel Robbins 将为您演示如何使用功能十分强大(但常被遗忘)的 UNIX 流编辑器 sed。
 

 

 ·bash 实例,第 3 部分    »显示摘要«
    摘要:探讨 ebuild 系统daniel robbins总裁兼 ceo, gentoo technologies, inc.2000 年 5 月 daniel robbins 在其最后一篇 bash实例文章中详细讲述了 gentoo linux ebuild 系统,这个展示 bash能力的极佳范例。循序渐进地,他为您展示如何实现 ebuild系统,并触及很多方便的 bash技术和设计策略。在本文末尾,......
 ·创建能够超时的socket连结api    »显示摘要«
    摘要:在socket编程中调用connect函数连接一远程机器,如果该ip不存在的话,connect将在一段时间内返回-1表示失败。问题是有时候我们需要准确控制connect函数连接的时间,这就需要我们能够控制这个connect函数。但是,gcc给我们提供的api没有这个功能。我自己设计了一个这样的api函数--connect2,它能够在用户设置的一段时间后,连接超时退出。 这个connect2的初步设......


通用线程 -- sed 实例,第 1 部分
上一页   ...出于某种原因,不是许多 gnu 开发人员忘记将稳定的源代码移至 ftp.gnu.org,就是它们的 "beta" 期间格外长(2 年!).例如,sed 3.02a 已有两年,甚至 3.02.80 也有一年,但它们仍不能(在 2000 年 8 月写本文章时)在 ftp.gnu.org 上获得.

正确的 sed 【程序编程相关:redhat linux8.1beta2

【推荐阅读:清除CISCO路由器密码

在本系列中,将使用 gnu sed 3.02.80.在即将出现的本系列后续文章中,某些(但非常少)最高级的示例将不能在 gnu sed 3.02 或 3.02a 中使用.如果您使用的不是 gnu sed,那么结果可能会不同.现在为什么不花些时间安装 gnu sed 3.02.80 呢?那样,不仅可以为本系列的余下部分作好准备,而且还可以使用可能是目前最好的 sed. 【扩展信息:让Debian不长一点赘肉

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/services 的每一行读入其称为模式缓冲区的内部缓冲区.一旦将一行读入模式缓冲区,它就执行 d 命令,然后打印模式缓冲区的内容(在本例中没有内容).我将在后面为您演示如何使用地址范围来控制将命令应用到哪些行 -- 但是,如果不使用地址,命令将应用到 所有行.

第三件要注意的事是括起 d 命令的单引号的用法.养成使用单引号来括起 sed 命令的习惯是个好注意,这样可以禁用 shell 扩展.

另一个 sed 示例

下面是使用 sed 从输出流除去 /etc/services 文件第一行的示例:

$ sed -e 1d /etc/services | more

如您所见,除了前面有 1 之外,该命令与第一个 d 命令十分类似.如果您猜到 1 指的是第一行,那您就猜对了.与第一个示例中只使用 d 不同的是,这一次使用的 d 前面有一个可选的数字地址.
...   下一页

 ·修改grub的显示标题    »显示摘要«
    摘要:如果由grub来引导多个系统,我们可以改变grub的配置文件,使引导的显示单词改成自己喜欢的语句.su到root, 更改/boot/grub/grub.conf文件,将文件中title后面的单词换成你喜欢的就可以了.我的如下:title red hat linux (2.4.20-8),good day, happy workingroot (hd0,5)kernel /boot/vmlinuz-......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE