- 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
您可能关注的文档
- 2020教师师德培训总结.docx
- 2021年pep小升初英语模拟测试题.docx
- 02197概率论与数理统计重点复习资料.docx
- 06001惠港酒店发文格式.docx
- 06005 统一打卡通知.docx
- 06092工作分析八套试卷 答案.docx
- 10000汉字起笔部首表.docx
- 11000地形测量技术设计.docx
- 20000字起笔部首检字表.docx
- 20148小继教培训心得体会.docx
- (2025)全国保安员资格试题库与参考答案.docx
- (2025)卫生应急知识考试试题(含参考答案).docx
- (2025)动物家畜疫病防治员考试题库及参考答案.docx
- (2025)建筑工程中级职称考试《专业基础知识》考试题库及答案.docx
- (2025)特种设备安全管理人员安全考核考试题库及答案.docx
- (2025)医师定期考核题库及参考答案.docx
- (2025)公务员考试时事政治题及答案.docx
- (2025)新安全生产法知识考试题库及参考答案.docx
- (2025)全国安全生产月活动《安全知识》答题活动考前测试题(含答案).docx
- (2025)新版保安员考试试题附含参考答案.docx
最近下载
- 船舶自动识别系统AIS FA170 中文说明书.pdf VIP
- 唐宋阴阳相宅宗初探———以敦煌写本宅经为考索.PDF VIP
- 睡虎地秦简《日书》研究综述.doc VIP
- 商业银行房地产贷款风险管理指引(2026年修订版).docx VIP
- CIIE-中国银发科技发展报告(2025).pdf
- Auntea Jenny沪上阿姨(上海)实业股份有限公司港交所IPO上市招股说明书(2024年12月更新版).pdf VIP
- 欧洲规范-NF P98-130-中文.pdf VIP
- 王雪华教授金匮要略讲稿.doc VIP
- 标准方法验证报告.docx VIP
- 最新香港朗文3A各单元知识要点 词汇语法.pdf VIP
原创力文档

文档评论(0)