……将产生以下输出:
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, rlengthawk 将打印:
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 输出:
... 下一页