当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 2001 年 10 月 在这篇 sed 系列的总结性文章中,Daniel Robbins 带您体验 sed 的真正力量。
 

 

    摘要:2001 年 10 月 在本文章系列中,daniel robbins 将为您演示如何使用功能十分强大(但常被遗忘)的 unix 流编辑器 sed。sed 是用批处理方式编辑文件或以十分有效的方式创建 shell 脚本以修改现有文件的理想工具。挑选编辑器在 unix 世界中有很多文本编辑器可供我们选择。思考一下 -- vi、emacs 和 jed 以及很多其它工具都会浮现在脑海中。我们都有自己已逐渐......
 ·bash 实例,第 3 部分    »显示摘要«
    摘要:探讨 ebuild 系统daniel robbins总裁兼 ceo, gentoo technologies, inc.2000 年 5 月 daniel robbins 在其最后一篇 bash实例文章中详细讲述了 gentoo linux ebuild 系统,这个展示 bash能力的极佳范例。循序渐进地,他为您展示如何实现 ebuild系统,并触及很多方便的 bash技术和设计策略。在本文末尾,......


通用线程 -- sed 实例,第 3 部分
上一页   ... $ sed -e 1!g;h;$!d forward.txt > backward.txt

如果登录到恰巧没有 "tac" 命令的 freebsd 系统,将发现该 sed 脚本很有用.虽然方便,但最好还是知道该脚本为什么那样做.让我们对它进行讨论.

【程序编程相关:iptables 中文手册

反转解释 【推荐阅读:学习嵌入式Linux的笔记和体会

当对上面的文本文件执行反转脚本时,首先执行的命令是 h.该命令告诉 sed 将模式空间(保存正在处理的当前行的缓冲区)的内容复制到保留空间(临时缓冲区).然后,执行 d 命令,该命令从模式空间中删除 "foo",以便在对这一行执行完所有命令之后不打印它. 【扩展信息:清除CISCO路由器密码

首先,该脚本包含三个由分号隔开的单独 sed 命令:1!g.h 与 $!d.现在,需要好好理解用于第一个与第三个命令的地址.如果第一个命令是 1g,则 g 命令将只应用第一行.然而,还有一个 ! 字符 -- 该 ! 字符 忽略该地址,即,g 命令将应用到除第一行之外的 所有行.$!d 命令与之类似.如果命令是 $d,则将只把 d 命令应用到文件中的最后一行($ 地址是指定最后一行的简单方式).然而,有了 ! 之后,$!d 将把 d 命令应用到除最后一行之外的 所有行.现在,我们所要理解的是这些命令本身做什么.

现在,第二行.在将 "bar" 读入模式空间之后,执行 g 命令,该命令将保留空间的内容 ("foo\n") 附加到模式空间 ("bar\n"),使模式空间的内容为 "bar\n\foo\n".h 命令将该内容放回保留空间保护起来,然后,d 从模式空间删除该行,以便不打印它.

对于最后的 "oni" 行,除了不删除模式空间的内容(由于 d 之前的 $!)以及将模式空间的内容(三行)打印到标准输出之外,重复同样的步骤.

现在,要用 sed 执行一些强大的数据转换.

sed qif 魔法

过去几个星期,我一直想买一份 quicken来结算我的银行帐户.quicken 是一个非常好的金融程序,当然会成功地完成这项工作.但是,经过考虑之后,我觉得自己可以轻易编写某个软件来结算我的支票簿.我想,毕竟,我是个软件开发人员!

我开发了一个很好的小型支票簿结算程序(使用 awk),它通过分析包含我的所有交易的文本文件的语法来计算余额.略微调整之后,我将其改进,以便可以象 quicken 那样跟踪不同的贷款与借款类别.但是,我还要添加一个特性.最近,我将帐户转移到一家有联机 web 帐户界面的银行.有一天,我注意到,这家银行的 web 站点允许以 quicken 的 .qif 格式下载我的帐户信息.我马上觉得,如果可以将该信息转换成文本格式,那就太棒了.

两种格式的故事

在查看 qif 格式之前,先看一下我的 checkbook.txt 格式:

28 aug 2000 food - - y supermarket 30.94 25 aug 2000 watr - 103 y check 103 52.86

在我的文件中,所有字段都由一个或多个制表符分开,每个交易占据一行.
...   下一页

 ·创建能够超时的socket连结api    »显示摘要«
    摘要:在socket编程中调用connect函数连接一远程机器,如果该ip不存在的话,connect将在一段时间内返回-1表示失败。问题是有时候我们需要准确控制connect函数连接的时间,这就需要我们能够控制这个connect函数。但是,gcc给我们提供的api没有这个功能。我自己设计了一个这样的api函数--connect2,它能够在用户设置的一段时间后,连接超时退出。 这个connect2的初步设......
» 本期热门文章:

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