【三剑客】awk函数
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函数的更多相关文章
- 性能工具之linux三剑客awk、grep、sed详解
前言 linux 有很多工具可以做文本处理,例如:sort, cut, split, join, paste, comm, uniq, column, rev, tac, tr, nl, pr, he ...
- Linux提取不匹配字符串的行和列(awk函数)
如下图所示,想把含有‘-nan’字符串的行提取出来 则用到awk函数,命令行如下: awk '{if($3!="-nan"){print $3}}' CHB_vs_ITU.weir ...
- Linux三剑客awk
Linux三剑客awk awk是一个强大的linux命令,有强大的文本格式化的能力,好比将一些文本数据格式化成专业的excel表的样式 awk早期在Unix上实现,我们用的awk是gawk,是GUN ...
- Linux三剑客-AWK
1.什么是awk AWK是一种处理文本文件的语言,是一个强大的文本分析工具.有统计和计算功能. 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Br ...
- Linux 三剑客 -- awk sed grep
本文由本人收集整理自互联网供自己与网友参考,参考文章均已列出,如有侵权,请告知! 顶配awk,中配sed,标配grep awk 参考 sed 参考 grep 参考 在线查看linux命令速记表 app ...
- (转)AWK函数
http://wiki.jikexueyuan.com/project/awk/built-in-functions.html-------内置函数 http://wiki.jikexueyuan.c ...
- linux awk函数
这节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y ...
- awk函数实现将简化IPV6地址补全
在用awk处理文本时,有些场景需要将简化的IPV6地址补充成完整的IPV6地址,下边函数可简单实现: IPV6地址补全函数 # ipv6地址补全函数 function compipv6(orig_ad ...
- awk函数实现将点分式形式的掩码转换为十进制形式的掩码
在用awk处理文本时,需要将源数据为点分式形式的掩码转换为十进制形式的掩码,下边的函数可简单实现: 转换功能函数cdr2mask function cdr2mask(mask_point) { num ...
随机推荐
- stm32:#ifndef/#define/#endif使用
参考:https://blog.csdn.net/abc5382334/article/details/18052757/ 比如:存在a.h文件#include "c.h"而此时b ...
- 在.NET Core中检查证书的到期日期
在 NUnit 测试中,我需要检查证书的有效期. 下面的代码片段可用于使用自定义证书验证回调检查任何证书属性. 所有你需要做的就是在回调中读取你感兴趣的属性,这样你就可以在之后检查它们. DateTi ...
- Linux命令 dos2unix 的实际应用场景
问题描述:书接上文springboot之停止与启动服务的脚本,编写杀死服务脚本的时候,总是不行,Linux会提示你类似下面这样的信息: killed pid: : arguments must be ...
- 【php】面向对象(四)
知识点:ai一. a => abstract(抽象类) a) 抽象类的修饰符,修饰类和成员方法 b) 注意:被修饰的类不能被实例化,被修饰的方法不能有程序体 c) 如果某一个类使用abstrac ...
- Linux基础篇,磁盘及文件使用管理
在windows系统下,我们可以使用图形化界面很明了的看出当前硬盘使用量与某个文件的占用空间大小和文件数量.但是在linux系统中,我们应该如何得到这些信息呢? 当然是功能强大的df与du了. 一.d ...
- 05-CSV文件读取(问题)
1.支持.txt,.log,.json三种格式 并且也支持.csv格式文件类型----.csv在使用时会出现乱码情况 2.当时遇到问题: CSV文件.txt文本内有数据,如:user ,pwd adm ...
- 十九种Elasticsearch字符串搜索方式终极介绍
前言 刚开始接触Elasticsearch的时候被Elasticsearch的搜索功能搞得晕头转向,每次想在Kibana里面查询某个字段的时候,查出来的结果经常不是自己想要的,然而又不知道问题出在了哪 ...
- Mybatis-项目结构
源文件:https://github.com/569844962/Mybatis-Learn/blob/master/doc/Mybatis%E6%95%B4%E4%BD%93%E6%9E%B6%E6 ...
- CSS躬行记(6)——滤镜
滤镜(filter)可改造元素的视觉呈现,CSS内置的滤镜有10种,通过SVG文件还能自定义滤镜. 一.调色滤镜 调色滤镜可控制元素的模糊.颜色.亮度等变化,并且多个滤镜可组合在一起使用.这些滤镜大部 ...
- delphi中DateTimePicker控件同时输入日期和时间
将DateTimePicker的Format属性中加入日期格式设成 'yyyy-MM-dd HH:mm',注意大小写 , 将kind设置为dtkTime即可,可以在每次Form onShow时将Dat ...