awk的内置函数大致可以分类为算数函数、字符串函数、时间函数、其他函数等

算数函数

最常用的算数函数有rand函数、srand函数、int函数。

可以使用rand函数生成随机数,但是使用rand函数时,需要配合srand函数,否则rand函数返回的值将一直不变

ghostwu@dev:~/linux/awk$ awk 'BEGIN { print rand(); }'
0.237788
ghostwu@dev:~/linux/awk$ awk 'BEGIN { print rand(); }'
0.237788
ghostwu@dev:~/linux/awk$ awk 'BEGIN { srand(); print rand(); }'
0.543596
ghostwu@dev:~/linux/awk$ awk 'BEGIN { srand(); print rand(); }'
0.524347
ghostwu@dev:~/linux/awk$ awk 'BEGIN { srand(); print rand(); }'
0.235681

用int函数取整

ghostwu@dev:~/linux/awk$ awk 'BEGIN { srand(); print 10 * rand(); }'
7.83585
ghostwu@dev:~/linux/awk$ awk 'BEGIN { srand(); print 10 * rand(); }'
8.53695
ghostwu@dev:~/linux/awk$ awk 'BEGIN { srand(); print int( 10 * rand() ); }' ghostwu@dev:~/linux/awk$ awk 'BEGIN { srand(); print int( 10 * rand() ); }' ghostwu@dev:~/linux/awk$ awk 'BEGIN { srand(); print int( 10 * rand() ); }'

字符串函数

gsub函数或sub函数替换指定文本字符串

1,不指定第三个参数,默认替换整行中匹配的字符串

ghostwu@dev:~/linux/awk$ awk '{ gsub( "n", "N" ); print }' ghostwu.txt
ghostwu maN
zhaNgsaN
lisi
ghostwu maN
zhaNzhao maN
peter maN
zhaNzhao maN
ghostwu@dev:~/linux/awk$ cat ghostwu.txt
ghostwu man
zhangsan
lisi
ghostwu man
zhanzhao man
peter man
zhanzhao man

2,可以指定第三个参数,替换指定的范围,如第一列

ghostwu@dev:~/linux/awk$ awk '{ gsub( "n", "N", $1 ); print }' ghostwu.txt
ghostwu man
zhaNgsaN
lisi
ghostwu man
zhaNzhao man
peter man
zhaNzhao man

还可以支持正则表达式

ghostwu@dev:~/linux/awk$ awk '{ gsub( "[a-z]", "G", $1 ); print }' ghostwu.txt
GGGGGGG man
GGGGGGGG
GGGG
GGGGGGG man
GGGGGGGG man
GGGGG man
GGGGGGGG man

sub替换的是第一次出现的字符串

ghostwu@dev:~/linux/awk$ awk '{ sub( "n", "N" ); print }' ghostwu.txt ghostwu  maN
zhaNgsan
lisi
ghostwu maN
zhaNzhao man
peter maN
zhaNzhao man

length:获取每一行文本的长度

ghostwu@dev:~/linux/awk$ awk '{ print $0, length() }' ghostwu.txt
ghostwu man
zhangsan
lisi
ghostwu man
zhanzhao man
peter man
zhanzhao man

index: 获取字符串的位置,没有该字符串,就是0

ghostwu@dev:~/linux/awk$ awk '{print $0, index( $0, "n" )}' ghostwu.txt
ghostwu man
zhangsan
lisi
ghostwu man
zhanzhao man
peter man
zhanzhao man

split:字符串切割成数组,每行切割的结果存储在数组arr中,返回值为数组的长度

ghostwu@dev:~/linux/awk$ awk '{ len = split( $0, arr, " " ); for ( i in arr ) { print i, arr[i], len } }' ghostwu.txt
ghostwu man
zhangsan lisi
ghostwu man
zhanzhao man
peter man
zhanzhao man
ghostwu@dev:~/linux/awk$ cat ghostwu.txt
ghostwu man
zhangsan
lisi
ghostwu man
zhanzhao man
peter man
zhanzhao man

asort:把数组的值从小到大排序,但是索引也发生改变了

ghostwu@dev:~/linux/awk$ awk 'BEGIN{arr["a"] = 12; arr["b"]=5; arr["c"] = 1; arr["d"]=8; for( i in arr ) { print i, arr[i] } }'
a
b
c
d
ghostwu@dev:~/linux/awk$ awk 'BEGIN{arr["a"] = 12; arr["b"]=5; arr["c"] = 1; arr["d"]=8; asort( arr ); for( i in arr ) { print i, arr[i] } }'

可以是用第二个参数 用来保存原数组排序后的结果,同时原数组保持不变

ghostwu@dev:~/linux/awk$ awk 'BEGIN{arr["a"] = 12; arr["b"]=5; arr["c"] = 1; arr["d"]=8; asort( arr, newarr ); for( i in newarr ) { print i, newarr[i] } }'

ghostwu@dev:~/linux/awk$ awk 'BEGIN{arr["a"] = 12; arr["b"]=5; arr["c"] = 1; arr["d"]=8; asort( arr, newarr ); for( i in arr ) { print i, arr[i] } }'
a
b
c
d

asort的返回值为数组中的元素个数

ghostwu@dev:~/linux/awk$ awk 'BEGIN{arr["a"] = 12; arr["b"]=5; arr["c"] = 1; arr["d"]=8; len = asort( arr, newarr ); for( i in arr ) { print len, i, arr[i] } }'
a
b
c
d

当数组的下标为字符串时,asorti 函数会根据原数组中的下标的字母顺序进行排序

Linux常用基本命令:三剑客命令之-awk内置函数用法的更多相关文章

  1. Linux常用基本命令:三剑客命令之-awk内置变量与自定义变量

    AWK中,变量分为两种:内置变量与自定义变量. 常见的内置变量有: FS:输入字段分隔符, 默认为空白字符 OFS:输出字段分隔符, 默认为空白字符 RS:输入记录分隔符(输入换行符), 指定输入时的 ...

  2. Linux常用基本命令:三剑客命令之-sed

    sed是一个很强大的文件处理工具,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作 格式:sed [option] [command] [file] 常用命令: a   ∶新 ...

  3. linux awk 内置函数详细介绍(实例)

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

  4. linux awk 内置函数实例

    awk内置函数,主要分4种:算数函数.字符串函数.时间函数.一般函数 一.算术函数 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y, x ) 返回 y/x ...

  5. linux awk 内置函数详细介绍(实例)

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

  6. awk内置函数、外部变量

    外部变量 ①获取外部变量 格式: awk '{action}' 变量名=变量值 ,这样传入变量可以在action中获得值. 示例: test='awk test'--day-5 外部变量 ①获取外部变 ...

  7. python常用内置函数用法精要

    用一个表格大致总结一下所有的内置函数用法,如下: 函数 功能简要说明 abs(x) 返回数字x的绝对值或复数x的模 all(iterable) 如果对于可迭代对象中所有元素x都等价于True,则返回T ...

  8. Python成长之路第二篇(2)_列表元组内置函数用法

    列表元组内置函数用法list 元组的用法和列表相似就不一一介绍了 1)def append(self, p_object):将值添加到列表的最后 # real signature unknown; r ...

  9. Python成长之路第二篇(1)_数据类型内置函数用法

    数据类型内置函数用法int 关于内置方法是非常的多这里呢做了一下总结 (1)__abs__(...)返回x的绝对值 #返回x的绝对值!!!都是双下划线 x.__abs__() <==> a ...

随机推荐

  1. Spring Cloud之踩坑01 -- Eureka高可用配置

    转载:https://blog.csdn.net/dear_Alice_moon/article/details/79373955 问题描述: 在进行Eureka高可用配置时,控制台一直出现“.... ...

  2. <Listener>HttpSessionListener和HttpSessionAttributeListener区别

    一.HttpSessionListener HttpSessionListener是对Session的一个监听,主要监听关于Session的两个事件,即初始化和销毁.HttpSessionListen ...

  3. Anton 上课题

    Anton 上课题 Anton likes to play chess. Also he likes to do programming. No wonder that he decided to a ...

  4. C++中const关键字 理解

    const:符号常量  使用符号常量写出的代码更容易维护:指针是边读边移动,而不是边写边移动,许多函数参数是只读不写的. const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替 ...

  5. linux上面是否有安装redis,redis启动

    1.进入/usr/local/src目录,下载redis # cd /usr/local/src# wget http://download.redis.io/releases/redis-4.0.6 ...

  6. TI 开发板安装USB转串口驱动

    使用TI开发板的时候,USB转串口驱动没有,显示,无法识别设备.搜了好久才搜到相关驱动. 做个记录. 链接: https://pan.baidu.com/s/1ZT5zzVcU727jrYacKVoT ...

  7. U-boot中SPL功能和源码流程分析

    在U-boot目录下,有个比较重要的目录就是SPL的,SPL到底是什么呢?为什么要用它呢? SPL(Secondary programloader)是uboot第一阶段执行的代码.主要负责搬移uboo ...

  8. Java 中的伪共享详解及解决方案

    1. 什么是伪共享 CPU 缓存系统中是以缓存行(cache line)为单位存储的.目前主流的 CPU Cache 的 Cache Line 大小都是 64 Bytes.在多线程情况下,如果需要修改 ...

  9. 2-4 完整Todolist案例

    在2-3 的基础上继续,综合前面的Todolist编写一个完整的案例,实现基本的输入内容,添加内容,点击删除内容 稍微讲解54行代码 splice()的用法

  10. C# 窗体间传值

    Form1: 父窗体, Form2: 子窗体. 1.父窗体接收子窗体的返回值: public partial class Form1: Form { private void btnOpen_Clic ...