Awk实例第3部分分析和总结.docxVIP

  • 0
  • 0
  • 约9.59千字
  • 约 10页
  • 2023-04-24 发布于上海
  • 举报
声明: 声明: 本文的原始版本最初发表于IBM developerWorks,现在所有权归属 Westtech Information Services。本文档是原始文档的更新版本, 包含了 Gentoo Linux 文档团队所做的很多改进。 现在无人积极维护本文档。 Awk 实例,第 3 部分 内容: 字符串函数和??支票簿? 格式化输出 虽然大多数情况下 awk 的 print 语句可以完成任务,但有时我们还需要更多。在那些情况下,awk 提供了两个我们熟知的老朋友 printf()和 sprintf()。是的, 如同其它许多 awk 部件一样,这些函数等同于相应的 C 语言函数。printf()会将格式化字符串打印到 stdout,而 sprintf()则返回可以赋值给变量的格式化字符串。如果不熟悉 printf()和 sprintf(),介绍 C 语言的文章可以让您迅速了解这两个基本 打印函数。在 Linux 系统上,可以输入man 3 printf来查看printf() 帮助页面。 以下是一些 awk sprintf()和 printf()的样本代码。可以看到,它们几乎与 C 语言完全相同。 代码 代码 1.1: awk sprintf()和 printf()样本代码x=1 b=foo printf(%s got a %d on the last test\n,Jim,83) myout=(%s-%d,b,x) print myout 此代码将打印: 代码 1.2: 代码输出 代码 1.2: 代码输出 Jim got a 83 on the last test foo-1 字符串函数 awk 有许多字符串函数,这是件好事。在awk 中,确实需要字符串函数,因为不能象在其它语言(如C、C++和 Python)中那样将字符串看作是字符数组。例如, 如果执行以下代码: 代码 1.3: 代码示例 代码 1.3: 代码示例 mystring=How are you doing today? print mystring[3] 将会接收到一个错误,如下所示: 代码 1.4: 代码错误信息 代码 1.4: 代码错误信息 awk: string.gawk:59: fatal: attempt to use scalar as array 噢,好吧。虽然不象 Python 的序列类型那样方便,但 awk 的字符串函数还是可以完成任务。让我们来看一下。 首先,有一个基本length()函数,它返回字符串的长度。以下是它的使用方法: 代码 1.5: length()函数示例print length(mystring) 代码 1.5: length()函数示例print length(mystring) 此代码将打印值: 代码 1.6: 打印值 代码 1.6: 打印值 24 好,继续。下一个字符串函数叫作index,它将返回子字符串在另一个字符串中出现的位置,如果没有找到该字符串则返回 0。使用 mystring,可以按以下方法调用它: 代码 1.7: index()函数示例print index(mystring,you) 代码 1.7: index()函数示例print index(mystring,you) awk 会打印: 代码 1.8: 函数输出 代码 1.8: 函数输出 9 让我们继续讨论另外两个简单的函数,tolower()和 toupper()。与您猜想的一样,这两个函数将返回字符串并且将所有字符分别转换成小写或大写。请注意, tolower()和 toupper()返回新的字符串,不会修改原来的字符串。这段代码: 代码 1.9: 将字符转换成大写或小写 代码 1.9: 将字符转换成大写或小写 print tolower(mystring) print toupper(mystring) print mystring ??将产生以下输出: 代码 1.10: 输出 代码 1.10: 输出 how are you doing today? HOW ARE YOU DOING TODAY? How are you doing today? 到现在为止一切不错,但我们究竟如何从字符串中选择子串,甚至单个字符?那就是使用 substr()的原因。以下是 substr()的调用方法: 代码 1.11: substr()函数示例mysub=substr(mystring,startpos,maxlen) 代码 1.11: substr()函数示例mysub=substr(mystring,startpos,maxlen) mystring 应该是要从中抽取子串的字符串变量或文字字符串。startpos 应该设置成起始字符位置,maxl

文档评论(0)

1亿VIP精品文档

相关文档