【三剑客】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 ...
随机推荐
- 1055 The World's Richest (25分)(水排序)
Forbes magazine publishes every year its list of billionaires based on the annual ranking of the wor ...
- 如何增加Tomcat内存
有时候在开发中,常常遇到内存溢出问题,很有可能项目过大,导致Tomcat内存不足问题,那么此时就要给Tomcat添加内存了,如,操作如下 1. 先找到Tomcat目录下的catalina.bat文件
- python 递归、匿名函数、
1.递归:就是函数自己调用自己.(注:递归最多循环999) 2.匿名函数(意义:减少内存占用) lambada 定义一个匿名函数,eg:lambad x,b:x+b (:前面是入参eg:x,b,:后 ...
- JQUERY滚动加载
$(document).height():整个网页的高度$(window).height():浏览器可视窗口的高度$(window).scrollTop():浏览器可视窗口顶端距离网页顶端的高度(垂直 ...
- Python中list(列表)、dict(字典)、tuple(元组)、set(集合)详细介绍
更新时间:2019.08.10 更新内容: "2.14加入sorted()函数" "2.3"加入一种删除元素的方法 "二.字典"新增1.5, ...
- Chrome浏览器架构
通用浏览器架构 它可以是一个具有许多不同线程的进程,也可以是具有几个通过IPC进行通信的多个线程的进程. 一个具有许多不同线程的进程 通过IPC进行通信的多个线程的进程 注意 这些不同的体系结构是实现 ...
- 树状数组模板--Color the ball
Color the ball HDU - 1556 N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电 ...
- [编译] 7、在Linux下搭建安卓APP的开发烧写环境(makefile版-gradle版)—— 在Linux上用命令行+VIM开发安卓APP
April 18, 2020 6:54 AM - BEAUTIFULZZZZ 目录 0 前言 1 gradle 安装配置 1.1 卸载系统默认装的gradle 1.2 下载对应版本的二进制文件 1.3 ...
- mysql 主键和默认 设为索引的规则
一.mysql 表中如果是单主键的话,那这个主键也会被 系统默认建为 索引 二.mysql 表中如果是复合主键的话,那系统会遵循左对齐原则,即如复合主键 a 和 b字段和c字段..., 默认建的主键索 ...
- MD5中使用16进制
MD5中使用16进制消息摘要 分类: java_secruity2012-12-28 13:11 719人阅读 评论(0) 收藏 举报 消息摘要 由于数据在计算机中的表示,最终以二进制的形式存在,所以 ...