在之前文章中,我们都是在命令行中写一些简短的awk命令,而awk做为一门解释型语言,一样是支持脚本运行的。

基本语法

#!/bin/awk -f
# 注释
awk 脚本体
  • #!:同shell,约定格式
  • /bin/awk:采用的解释器位置
  • -f:awk选项,代表从文件中读取程序文件
  • #:同shell,除第一行的#以外,其他均代表为注释内容

脚本示例

1、第一个示例

[root@localhost awk]# vim test.awk
[root@localhost awk]# cat test.awk
#!/bin/awk -f
BEGIN {print "this is test awk script"}
[root@localhost awk]# chmod +x test.awk
[root@localhost awk]# ./test.awk
this is test awk script

2、第二个示例

[root@localhost awk]# vim passwd.awk
[root@localhost awk]# cat passwd.awk
#!/bin/awk -f
BEGIN {FS=":"}
/root/ {print "Username is:"$1,"UID is:"$3,"GID is:"$4,"Shell is:"$NF}
[root@localhost awk]# chmod +x passwd.awk
[root@localhost awk]# ./passwd.awk /etc/passwd
Username is:root UID is:0 GID is:0 Shell is:/bin/bash
Username is:operator UID is:11 GID is:0 Shell is:/sbin/nologin

自定义函数

    前面已经学习了awk内置的函数,相信大家已经有所理解和掌握了,本文我们将还学习一下awk自定义函数。

基本语法

function FunctionName(parameter list)
{
statements
return 表达式或结果
}
  • function:函数标识
  • FunctionName:用户自定义函数的名称,不能使用awk的保留关键字
  • parameter list:用户自定义函数的参数列表,参数为可选
  • statements:函数主体
  • return:返回函数的结果,为可选

自定义函数示例

[root@localhost awk]# vim functions.awk
[root@localhost awk]# cat functions.awk #!/bin/awk -f # define function
function Add(firstNum,secondNum)
{
sum=0
for(i=firstNum;i<=secondNum;i++)
{
sum=sum+i;
}
return sum
} function main(num1,num2)
{
result=Add(num1,num2)
print "Sum is :",result
} # execute function
BEGIN { main(1,100) } [root@localhost awk]# chmod +x functions.awk
[root@localhost awk]# ./functions.awk
Sum is : 5050

    到此awk的基础知识已经介绍完毕,当然如果想更深入学习awk知识,则还多查阅相关资料。

本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:

awk基础05-自定义函数和脚本的更多相关文章

  1. shell脚本编程基础之自定义函数库

    脚本编程知识点 ${#VAR_NAME}:引用变量中字符的长度 A="25 90 100 120": echo ${A#* }:针对A变量,#表示从左往右,*空格表示以空格为分隔符 ...

  2. awk基础04-内置函数

        在awk中常用的内置函数大概分为:数值函数.字符函数.时间函数.二进制操作函数.数组函数.自定义函数等. 数值函数   常用的数值函数主要有int.rand.srand.sqrt等.详细如下所 ...

  3. C语言基础:自定义函数

    #include <stdio.h>//声明函数的原型:参数名可以省略 void printRectangle();void printfTriangle();void printhh(l ...

  4. php面试笔记(5)-php基础知识-自定义函数及内部函数考点

    本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而函数相关的考点 ...

  5. python 基础篇 自定义函数

    多态 我们可以看到,Python 不用考虑输入的数据类型,而是将其交给具体的代码去判断执行,同样的一个函数(比如这边的相加函数 my_sum()),可以同时应用在整型.列表.字符串等等的操作中. 在编 ...

  6. Python基础(二)自定义函数

    1.判断字符串,内容是否为数字 我们用python:xlrd读Excel内容时,本来只是输入的整数字,经常读出来的是float类型 我们需要自动转成整型,意思就是说,读出来的和我们输入的一样,但是,我 ...

  7. Mysql学习笔记(七)mysql编程基础之自定义函数。

    delimiter $$ create function fn_liangzifunction() returns int no sql begin ; return @row_no; end; $$ ...

  8. 浅谈Excel开发:四 Excel 自定义函数

    我们知道,Excel中有很多内置的函数,比如求和,求平均,字符串操作函数,金融函数等等.在有些时候,结合业务要求,这些函数可能不能满足我们的需求,比如我想要一个函数能够从WebService上获取某只 ...

  9. Excel 自定义函数

    浅谈Excel开发:四 Excel 自定义函数   我们知道,Excel中有很多内置的函数,比如求和,求平均,字符串操作函数,金融函数等等.在有些时候,结合业务要求,这些函数可能不能满足我们的需求,比 ...

随机推荐

  1. (原创)AP6212蓝牙模块在am335x控制板上的应用

    主控板wifi模块调通后接着调试蓝牙,经过两周的摸索,终于把蓝牙应用基本建立起来,下面记录下大概流程. 1.硬件管脚设置 static void uart4_init(int evm_id, int ...

  2. Web验证方式(3)--OAuth 2.0协议

    介绍 OAuth协议是用来解决第三方应用程序访问Http Service的时候的认证问题.举个例子:某视频网站支持用户通过微信登陆,然后获取用户在微信上的图像信息. 在这个场景里 微信充当的就是Htt ...

  3. visualvm 和jdk 对应版本下载地址列表

    http://visualvm.java.net/releases.html VisualVM Corresponding Java VisualVM VisualVM 1.3.7Released: ...

  4. Fragment 横竖屏切换问题

    转自:http://my.oschina.net/u/614511/blog/76444 在默认情况下当发生横竖屏切换时,当前Activity中的fragment都会通过Fragment.instan ...

  5. 1021 docker初识

    docker与虚拟机相比,没有虚拟化内核,转而使用宿主机的内核.因此docker更轻更快 docker缺点:后端兼容性测试需求.把软件安装在不同的操作系统上进行测试,观察软件运行是否良好. 不能用do ...

  6. js 按字段分组

    var data = [{"id":"32b80b76-a81e-4545-8065-1e7c57180801","userId":&quo ...

  7. Solr聚合查询

    1  分组查询 概述:Solr常用的分组查询有两种,Facet分组和Group分组,分别以下列出这两种查询:   1.1     Facet分组 solr种以导航为目的的查询结果成为facet,在用户 ...

  8. delete,truncate,drop的区别

    操作 删除对象 表和索引的空间 是否回滚 时间 delete table和view的数据,可以使用where精确删除,删除会触发触发器 表或索引的空间不变化 是dml,可以rollback回滚 最慢 ...

  9. 小米笔记本pro CPU GPU 做科学计算的算力对比

    小米笔记本pro:15.6寸,i7-8850,16G,256G,GPU:MX150 测试对象Caffe,MNIST训练 使用纯CPU训练: 1.耗时:11分58秒 2.功耗:35W 使用GPU训练: ...

  10. Spring Boot 异步调用

    添加一个类ThreadPoolConfig.java package com.cjcx.inter.framework.config; import org.springframework.conte ...