当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 字符串函数和……支票簿?Daniel Robbins总裁兼 CEO, Gentoo Technologies, Inc.2001 年 4 月 在这篇 awk 系列的总结中,Daniel 向您介绍 awk 重要的字符串函数,以及演示了如何从头开始编写完整的支票簿结算程序。
 

 

    摘要:2001 年 10 月 在这篇 sed 系列的总结性文章中,daniel robbins 带您体验 sed 的真正力量。在介绍完几个重要的 sed 脚本之后,他将通过将一个 quicken .qif 文件转换成可读文本格式来演示一些基本 sed 脚本的编写。该转换脚本不仅实用,而且还是展现 sed 脚本编写能力的极佳示例。强健的 sed在 第二篇 sed 文章中,我提供了一些示例来演示 sed 的......
    摘要:2001 年 10 月 在本文章系列中,daniel robbins 将为您演示如何使用功能十分强大(但常被遗忘)的 unix 流编辑器 sed。sed 是用批处理方式编辑文件或以十分有效的方式创建 shell 脚本以修改现有文件的理想工具。挑选编辑器在 unix 世界中有很多文本编辑器可供我们选择。思考一下 -- vi、emacs 和 jed 以及很多其它工具都会浮现在脑海中。我们都有自己已逐渐......


通用线程:Awk 实例,第 3部分
上一页   ...print tolower(mystring) print toupper(mystring) print mystring

……将产生以下输出:

mysub=substr(mystring,startpos,maxlen)

mystring 应该是要从中抽取子串的字符串变量或文字字符串.startpos 应该设置成起始字符位置,maxlen 应该包含要抽取的字符串的最大长度.请注意,我说的是 最大长度 ;如果 length(mystring) 比 startpos+maxlen 短,那么得到的结果就会被截断.substr() 不会修改原始字符串,而是返回子串.以下是一个示例: 【程序编程相关:系统调用的实现及调用过程

how are you doing today? how are you doing today? how are you doing today?

到现在为止一切不错,但我们究竟如何从字符串中选择子串,甚至单个字符?那就是使用 substr() 的原因.以下是 substr() 的调用方法: 【推荐阅读:关于Raid-10

you

如果您通常用于编程的语言使用数组下标访问部分字符串(以及不使用这种语言的人),请记住 substr() 是 awk 代替方法.需要使用它来抽取单个字符与子串;因为 awk 是基于字符串的语言,所以会经常用到它. 【扩展信息:学习嵌入式Linux的笔记和体会

print substr(mystring,9,3)

awk 将打印:

现在,我们讨论一些更耐人寻味的函数,首先是 match().match() 与 index() 非常相似,它与 index() 的区别在于它并不搜索子串,它搜索的是规则表达式.match() 函数将返回匹配的起始位置,如果没有找到匹配,则返回 0.此外,match() 还将设置两个变量,叫作 rstart 与 rlength.rstart 包含返回值(第一个匹配的位置),rlength 指定它占据的字符跨度(如果没有找到匹配,则返回 -1).通过使用 rstart.rlength.substr() 与一个小循环,可以轻松地迭代字符串中的每个匹配.以下是一个 match() 调用示例:

print match(mystring,/you/), rstart, rlength

awk 将打印:

9 9 3

字符串替换

现在,我们将研究两个字符串替换函数,sub() 与 gsub().这些函数与目前已经讨论过的函数略有不同,因为它们 确实修改原始字符串 .以下是一个模板,显示了如何调用 sub():

sub(regexp,replstring,mystring)

调用 sub() 时,它将在 mystring 中匹配 regexp 的第一个字符序列,并且用 replstring 替换该序列.sub() 与 gsub() 用相同的自变量;唯一的区别是 sub() 将替换第一个 regexp 匹配(如果有的话),gsub() 将执行全局替换,换出字符串中的所有匹配.以下是一个 sub() 与 gsub() 调用示例:

sub(/o/,"o",mystring) print mystring mystring="how are you doing today?" gsub(/o/,"o",mystring) print mystring

必须将 mystring 复位成其初始值,因为第一个 sub() 调用直接修改了 mystring.在执行时,此代码将使 awk 输出:


...   下一页
 ·bash 实例,第 3 部分    »显示摘要«
    摘要:探讨 ebuild 系统daniel robbins总裁兼 ceo, gentoo technologies, inc.2000 年 5 月 daniel robbins 在其最后一篇 bash实例文章中详细讲述了 gentoo linux ebuild 系统,这个展示 bash能力的极佳范例。循序渐进地,他为您展示如何实现 ebuild系统,并触及很多方便的 bash技术和设计策略。在本文末尾,......
» 本期热门文章:

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