Unix awk中的自定义函数

系统 其他OS
我们在文章中,会讲解一些Unix awk中的自定义函数的知识。通过文章,我们了解函数的使用包含两部分:函数的定义与函数调用。

定义和调用用户自己的函数是几乎每个高级语言都具有的功能,Unix awk也不例外,但原始的Unix awk并不提供函数功能,只有在nawk或较新的Unix awk版本中才可以增加函数。

函数的使用包含两部分:函数的定义与函数调用。其中函数定义又包括要执行的代码(函数本身)和从主程序代码传递到该函数的临时调用。

Unix awk函数的定义方法如下:

function 函数名(参数表){函数体}

在gawk中允许将function省略为func,但其它版本的awk不允许。函数名必须是一个合法的标志符,参数表中可以不提供参数(但在调用函数时函数名后的一对括号仍然是不可缺少的),也可以提供一个或多个参数。与C语言相似,awk的参数也是通过值来传递的。

在Unix awk中调用函数比较简单,其方法与C语言相似,但Unix awk比C语言更为灵活,它不执行参数有效性检查。

换句话说,在你调用函数时,可以列出比函数预计(函数定义中规定)的多或少的参数,多余的参数会被Unix awk所忽略,而不足的参数,awk将它们置为缺省值0或空字符串,具体置为何值,将取决于参数的使用方式。

Unix awk函数有两种返回方式:隐式返回和显式返回。当Unix awk执行到函数的结尾时,它自动地返回到调用程序,这是函数是隐式返回的。如果需要在结束之前退出函数,可以明确地使用返回语句提前退出。方法是在函数中使用形如:return 返回值 格式的语句。

例:下面的例子演示了函数的使用。在这个示例中,定义了一个名为print_header的函数,该函数调用了两个参数FileName和PageNum,FileName参数传给函数当前使用的文件名,PageNum参数是当前页的页号。这个函数的功能是打印(显示)出当前文件的文件名,和当前页的页号。完成这个功能后,这个函数将返回下一页的页号。

 

  1. nawk   
  2. 'BEGIN{pageno=1;file=FILENAME   
  3. pageno=print_header(file,pageno);#调用函数print_header  
  4. printf("当前页页号是:%d ",pageno);  
  5. }  
  6. #定义函数print_header  
  7. function print_header(FileName,PageNum){  
  8. printf("%s %d ",FileName,PageNum); >PageNum++;return PageNUm;   
  9. }  
  10. }' myfile  

执行这个程序将显示如下内容:

myfile 1
当前页页号是:2

Unix awk中的自定义函数的知识,我们就讲解到这里了。

【编辑推荐】

  1. Unix awk的内置函数知识概括
  2. 关于Unix awk的记录的知识讲解
  3. Unix awk的调用方式方面的知识介绍
  4. Unix awk使用手册修改版本
  5. 为什么要使用Unix awk
责任编辑:小霞
相关推荐

2023-10-31 09:10:39

2010-05-11 11:29:11

Unix awk

2010-10-25 16:05:07

oracle自定义函数

2010-09-06 15:41:34

SQL函数存储过程

2010-09-14 16:47:23

SQL自定义函数

2010-09-14 16:59:39

SQL自定义函数

2010-05-06 14:50:23

Unix系统功能键

2023-06-28 08:05:46

场景vue3自定义

2021-11-23 15:06:42

Kubernetes 运维开源

2022-06-06 09:01:16

SwiftUI自定义导航

2019-12-02 21:29:45

Keras神经网络TensorFlow

2015-03-26 11:51:22

2011-06-15 09:24:36

Qt Widget Model

2015-06-10 10:54:24

自定义路PHP

2015-02-12 15:33:43

微信SDK

2018-03-16 08:41:16

Oracle存储函数

2011-05-17 13:32:04

oracle

2015-01-14 15:06:48

定义相机

2015-02-12 15:38:26

微信SDK

2021-07-15 16:41:21

Swift查询函数
点赞
收藏

51CTO技术栈公众号