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. Vuejs——(12)组件——动态组件

    版权声明:出处http://blog.csdn.net/qq20004604   目录(?)[+]   本篇资料来于官方文档: http://cn.vuejs.org/guide/components ...

  2. 找出数组中求和等于y的所有子数组

    算法记录: 给定一个数组x,每个元素都是正整数,找出其中满足条件"求和等于y"的所有子数组.(简化问题,每个元素都不相等) x=[x1,...,xn],暴力搜索,复杂度O(2^n) ...

  3. SQL Server PageIOLatch和PageLatch

    Latch是轻量级的锁,它是SQL Server内部用来同步资源访问的一个数据结构,使数据的访问同步有序,这意味着,当一个线程获得资源R的Latch的独占使用权时,如果其他的线程也想访问这个Latch ...

  4. WPF中TreeView的+-号和连线style的一种实现

    最近又开始跟WPF打交道,项目里面用到了TreeView这个控件.然后需要有一个连线的外观就像是这样 二话不说,百度了一下,找到一个实现, 通道. 把代码拷贝到项目里面,跑了一下,看上去还不错.但是这 ...

  5. maya2012卸载/安装失败/如何彻底卸载清除干净maya2012注册表和文件的方法

    maya2012提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装maya2012失败提示maya2012安装未完成,某些产品无法安装,也有时候想重新安装maya ...

  6. JS应用实例1:注册页面表单校验

    这里是简单的前端校验,后边还会介绍后台的校验. 多重校验保证获取安全数据 步骤: 1.确定事件onsubmit,并绑定函数 2.编写函数,作用是获取输入数据 3.判断数据是否合法,合法则提交,否则表单 ...

  7. 第二篇:服务消费者(RestTemplate+ribbon)

    第一篇讲了服务的注册,这篇来说说服务的调用,服务与服务的通讯是基于http restful,springcloud的服务调用是通过ribbon方式的,客户端的负载均衡. Talk is cheap.S ...

  8. vue 自学笔记(5) 列表渲染

    列表渲染 一:v-for 指令 当我们涉及到列表渲染数据的时候,不可能做一个重复的工作去不停的一个一个的渲染每一项列表.并且列表数据的表现,比如从后端请求过来的数据,不可能是一个一个的单独的 JSON ...

  9. POJ 2895

    #include <iostream> #include <string> #define MAXN 27 using namespace std; short map[MAX ...

  10. java——IObufferedReader文件输入输出流

    package com.jredu.ch02_lianxi; import java.io.BufferedReader;import java.io.BufferedWriter;import ja ...