1. 内置函数

awk的内置函数有算术、字符串、时间、位操作和其它杂项的函数。

1.1 算术函数

  • atan2(y,x)  返回弧度的反正切(y/x)
  • cos(expr)  返回expr的余弦(以弧度形式)
  • exp(expr)  此函数用作找到指数值。
  • int(expr)  取整
  • log(expr)  计算自然对数
  • rand()   返回随机数,0和1之间,[0,1)
  • sin(expr)  正弦(以弧度形式)
  • sqrt(expr)  平方根
  • srand([expr])  产生种子值的随机数。使用expr作为随机数生成的新的种子。如果没有expr,使用一天的时间值作为种子值。
[root@oldboy test]# awk 'BEGIN{print int(13.2)}'     # 取整
13
[root@oldboy test]# awk 'BEGIN{print log(13.2)}' # 自然对数
2.58022
[root@oldboy test]# awk 'BEGIN{print rand()}' # 随机数
0.237788
[root@oldboy test]# awk 'BEGIN{print srand()}' # 随机数种子
1
[root@oldboy test]# awk 'BEGIN{print srand(111)}'
1
[root@oldboy test]# awk 'BEGIN{print srand(13.2)}'
1
[root@oldboy test]# awk 'BEGIN{print rand()}' # 固定不变的随机数
0.237788
[root@oldboy test]# awk 'BEGIN{print rand()}'
0.237788
[root@oldboy test]# awk 'BEGIN{print rand()}'
0.237788 [root@oldboy test]# awk 'BEGIN{print sqrt(13.2)}' # 平方根
3.63318

1.2 字符串函数

  • gsub(Ere, Repl, [ln])  和sub函数完全一样使用。区别:gsub全部替换,sub只替换匹配正则的第一个具体值。
  • sub(Ere, Repl, [ln])   
    • 用Repl参数指定的字符串题替换 ln 参数指定的字符串中的由 Ere参数指定的扩展正则表达式的第一个具体值。
    • sub函数返回替换的数量。
    • 出现在Repl参数指定的字符串中的&(and符号)由ln参数指定的与Ere参数的指定的扩展正则表达式匹配的字符串替换。
    • 如果未指定ln参数,缺省值是整个记录($0)
  • index(str1, str2)
    • 在str1中如果有出现str2,则返回在str1中的位置;若str2不存在,则返回0.
    • 字符串的索引起始值为1。
  • length[(str)]
    • 返回str的字符串长度(字符形式)
    • 如未给出str参数,则返回整个记录的长度($0)
  • substr(str, start, [length])
    • 从字符串str中,起始位置start取长度为length的子字符串。
    • 如为指定参数length,则子串的长度将是从start位置到str的结尾的长度。
  • match(str, Ere)
    • 匹配正则的模式,如str中存在,则返回匹配的位置
    • 如不存在,则返回0
  • split(str, Arr, [Ere])
    • 将str通过Ere分割成array
  • tolower(str) 小写化
  • toupper(str) 大写化
  • sprintf(Format, Expr, Expr,...)
    • 根据format参数指定的prinf子例格式字符串来格式化Expr参数指定的表达式,并返回最后生成的字符串。

参数:

    • str字符串;
    • Ere扩展正则表达式
    • Repli 替换字符串

示例:

gsub替换:在info中查找满足正则表达式,/[0-9]+/用"!" 替换,并且替换后的值,赋值给info未给info值,默认是$0。

[root@oldboy test]# awk 'BEGIN{info="this is a test 2010test!";gsub(/[0-9]+/,"!",info); print info}'
this is a test !test!

sub替换:替换匹配正则的第一个值;gsub替换所有。

[root@oldboy test]# awk '{sub(/\//,"?");print $0}' awk_test_file.txt
root:x:0:0:root:?root:/bin/bash
bin:x:1:1:bin:?bin:/sbin/nologin
daemon:x:2:2:daemon:?sbin:/sbin/nologin
adm:x:3:4:adm:?var/adm:/sbin/nologin
lp:x:4:7:lp:?var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:?sbin:/bin/sync
shutdown:x:6:0:shutdown:?sbin:/sbin/shutdown
halt:x:7:0:halt:?sbin:/sbin/halt
mail:x:8:12:mail:?var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:?var/spool/uucp:/sbin/nologin
[root@oldboy test]# awk '{gsub(/\//,"?");print $0}' awk_test_file.txt
root:x:0:0:root:?root:?bin?bash
bin:x:1:1:bin:?bin:?sbin?nologin
daemon:x:2:2:daemon:?sbin:?sbin?nologin
adm:x:3:4:adm:?var?adm:?sbin?nologin
lp:x:4:7:lp:?var?spool?lpd:?sbin?nologin
sync:x:5:0:sync:?sbin:?bin?sync
shutdown:x:6:0:shutdown:?sbin:?sbin?shutdown
halt:x:7:0:halt:?sbin:?sbin?halt
mail:x:8:12:mail:?var?spool?mail:?sbin?nologin
uucp:x:10:14:uucp:?var?spool?uucp:?sbin?nologin

index索引值:

[root@oldboy test]# awk '{print index($0,"nologin")}' awk_test_file.txt
0
26
33
30
34
0
0
0
40
41

length取字符串长度,substr取子字符串:

[root@oldboy test]# awk 'BEGIN{str="this is a line.\n this is second line.";print length(str)}'
37 [root@oldboy test]# awk 'BEGIN{str="this is a line.\n this is second line.";print substr(str,20,5)}'
is is
[root@oldboy test]# awk 'BEGIN{str="this is a line.\n this is second line.";print substr(str,20)}'
is is second line.

match匹配查找:结合三元运算显示是否成功匹配

[root@oldboy test]# awk 'BEGIN{info="this is a test2010test!"; print match(info,/[0-9]+/) ? "ok": "no found";}'
ok

split分割:

[root@oldboy test]# awk 'BEGIN{info="this is a test";split(info,tA," ");for (k in tA){print k,tA[k]}}'       4 test
1 this
2 is
3 a

1.3 时间函数

1.4 位操作函数

1.5 其它函数

2. 自定义函数

【三剑客】awk函数的更多相关文章

  1. 性能工具之linux三剑客awk、grep、sed详解

    前言 linux 有很多工具可以做文本处理,例如:sort, cut, split, join, paste, comm, uniq, column, rev, tac, tr, nl, pr, he ...

  2. Linux提取不匹配字符串的行和列(awk函数)

    如下图所示,想把含有‘-nan’字符串的行提取出来 则用到awk函数,命令行如下: awk '{if($3!="-nan"){print $3}}' CHB_vs_ITU.weir ...

  3. Linux三剑客awk

    Linux三剑客awk awk是一个强大的linux命令,有强大的文本格式化的能力,好比将一些文本数据格式化成专业的excel表的样式 awk早期在Unix上实现,我们用的awk是gawk,是GUN ...

  4. Linux三剑客-AWK

    1.什么是awk AWK是一种处理文本文件的语言,是一个强大的文本分析工具.有统计和计算功能. 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Br ...

  5. Linux 三剑客 -- awk sed grep

    本文由本人收集整理自互联网供自己与网友参考,参考文章均已列出,如有侵权,请告知! 顶配awk,中配sed,标配grep awk 参考 sed 参考 grep 参考 在线查看linux命令速记表 app ...

  6. (转)AWK函数

    http://wiki.jikexueyuan.com/project/awk/built-in-functions.html-------内置函数 http://wiki.jikexueyuan.c ...

  7. linux awk函数

    这节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y ...

  8. awk函数实现将简化IPV6地址补全

    在用awk处理文本时,有些场景需要将简化的IPV6地址补充成完整的IPV6地址,下边函数可简单实现: IPV6地址补全函数 # ipv6地址补全函数 function compipv6(orig_ad ...

  9. awk函数实现将点分式形式的掩码转换为十进制形式的掩码

    在用awk处理文本时,需要将源数据为点分式形式的掩码转换为十进制形式的掩码,下边的函数可简单实现: 转换功能函数cdr2mask function cdr2mask(mask_point) { num ...

随机推荐

  1. Python多线程同步互斥锁

    接着上篇多线程继续讲,上篇最后的多线程共享全局变量对变量的处理值出错在本文中给出解决方案. 出现这个情况的原因是在python解释器中GIL全局解释器锁. GIL:全局解释器锁,每个线程在执行的过程都 ...

  2. Unity 游戏框架搭建 2019 (二十七) 弃用的代码警告解决

    在前两篇,我们把所有的示例重头到尾整理了一遍. 当前的状态如下: 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 遗留问题: (完成) 第八个示例与之前的示例代码重复,功能重复. (完成 ...

  3. SpringMVC(六):分层整合SSM

    环境搭建 版本: MySQL 8 SpringMVC+Spring+Mybatis C3P0连接池 数据库建表 CREATE DATABASE `ssmbuild`; `ssmbuild` DROP ...

  4. VSCode 初次写vue项目并一键生成.vue模版

    VSCode 写vue项目一键生成.vue模版 1.新建代码片段 文件-->首选项-->用户代码片段-->点击新建代码片段--取名vue.json 确定 2.配置快捷生成的vue模板 ...

  5. asap异步执行实现原理

    目录 为什么分析asap asap概述 asap源码解析-Node版 参考 1.为什么分析asap 在之前的文章 async和await是如何实现异步编程? 中的浅谈Promise如何实现异步执行小节 ...

  6. 【图机器学习】cs224w Lecture 7 - 节点的表示

    目录 Node Embedding Random Walk node2vec TransE Embedding Entire Graph Anonymous Walk Reference 转自本人:h ...

  7. vue实现首屏加载等待动画 避免首次加载白屏尴尬

    0 直接上效果图 1背景,用户体验良好一直是个重要的问题. 2怎么加到自己项目里面? 复制css html代码到自己的index.html即可 代码链接 源码地址 Vue学习前端群493671066, ...

  8. python3(二十三)classInstance

    """ 类和实例和访问权限 """ __author__ = 'shaozhiqi' # class后面紧接着是类名,即Student,类名 ...

  9. 实例讲解Springboot整合MongoDB进行CRUD操作的两种方式

    1 简介 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库.两者在分布式.微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合Mon ...

  10. python基础之函数详解

    Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...