美文网首页
【Linux shell学习笔记-16-gawk进阶5】

【Linux shell学习笔记-16-gawk进阶5】

作者: 西布鲁克 | 来源:发表于2021-05-12 09:07 被阅读0次

5.格式化打印

gawk中有同C语言中的printf函数一样用法的函数,如果熟悉C语言的printf函数用法,对gawk格式化打印的理解就会很容易。

格式化指定符的控制字母
c:将一个数作为ASCII字符显示
d:显示一个整数
i:显示一个整数(跟d一样)
e:用科学计数法显示一个数
f:显示一个浮点值
g:用科学计数法或浮点数显示(选择较短的格式)
o:显示一个八进制值
s:显示一个文本字符串
x:显示一个十六进制值
X:显示一个十六进制值,但用大写字母A~F

6.内建函数

6.1 数学函数

gawk数学函数
atan2(x,y)
cos(x)
exp(x)
int(x)
log(x)
rand()
sin(x)
sqrt(x)
srand(x)

6.2 按位操作函数

按位与:and(v1,v2)
按位或:or(v1,v2)
补运算:compl(val)
val左移count位:lshift(val,count)
val右移count位:rshift(val,count)
按位异或:xor(v1,v2)

6.3 字符串函数

gawk字符串函数
asort(s [,d]):将数组s按数据元素值排序。索引值会被替换成表示新的排序顺序的连续数字。另外, 如果指定了d,则排序后的数组会存储在数组d中
asorti(s [,d]):将数组s按索引值排序。生成的数组会将索引值作为数据元素值,用连续数字索引来表 明排序顺序。另外如果指定了d,排序后的数组会存储在数组d中
gensub(r, s, h [, t]):查找变量$0或目标字符串t(如果提供了的话)来匹配正则表达式r。如果h是一个以g 或G开头的字符串,就用s替换掉匹配的文本。如果h是一个数字,它表示要替换掉第h 处r匹配的地方
gsub(r, s [,t]):查找变量$0或目标字符串t(如果提供了的话)来匹配正则表达式r。如果找到了,就 全部替换成字符串s
index(s, t):返回字符串t在字符串s中的索引值,如果没找到的话返回0 length([s]):返回字符串s的长度;如果没有指定的话,返回$0的长度
match(s, r [,a]):返回字符串s中正则表达式r出现位置的索引。如果指定了数组a,它会存储s中匹配正 则表达式的那部分
split(s, a [,r]):将s用FS字符或正则表达式r(如果指定了的话)分开放到数组a中。返回字段的总数
sprintf(format,variables):用提供的format和variables返回一个类似于printf输出的字符串
sub(r, s [,t]):在变量$0或目标字符串t中查找正则表达式r的匹配。如果找到了,就用字符串s替换 掉第一处匹配
substr(s, i [,n]):返回s中从索引值i开始的n个字符组成的子字符串。如果未提供n,则返回s剩下的部分
tolower(s):将s中的所有字符转换成小写
toupper(s):将s中的所有字符转换成大写

6.4 时间函数

mktime(datespec):将一个按YYYY MM DD HH MM SS [DST]格式指定的日期转换成时间戳值
strftime(format[,timestamp]):将当前时间的时间戳或timestamp(如果提供了的话)转化格式化日期(采用shell函数date()的格式)
systime( ):返回当前时间的时间戳

7.自定义函数

除了gawk中的内建函数,还可以在gawk程序中创建自定义函数。

7.1 定义函数

要定义自己的函数,必须用function关键字。

function name([variables])
{
statements
}

7.2 使用自定义函数

在定义函数时,它必须出现在所有代码块之前(包括BEGIN代码块)。

$ gawk '
> function myprint()
>{
> printf "%-16s - %s\n", $1, $4
>}
> BEGIN{FS="\n"; RS=""} 
>{
> myprint()
> }' data2
7.3 创建函数库

首先需要创建一个存储所有gawk函数的文件。

$ cat funclib
    function myprint()
    {
      printf "%-16s - %s\n", $1, $4
    }
    function myrand(limit)
    {
      return int(limit * rand())
    }
    function printthird()
    {
print $3 }
$

然后使用-f选项使用函数库文件中的函数定义

$ gawk -f funclib -f script4 data2

相关文章

  • 【Linux shell学习笔记-16-gawk进阶5】

    5.格式化打印 gawk中有同C语言中的printf函数一样用法的函数,如果熟悉C语言的printf函数用法,对g...

  • linux shell脚本攻略笔记

    LINUX SHELL脚本攻略笔记[速查] linux shell脚本攻略笔记

  • Linux Shell学习笔记

    Linux Shell学习笔记 基本信息 系统:Debian 9.5 发行信息:Debian GNU/Linux ...

  • Shell 学习笔记

    Shell 学习笔记 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是...

  • Linux基础学习笔记2 Shell

    Linux基础学习笔记2 Shell 本文发布于博客frankwtq 这是Linux基础学习笔记的第二部分,主要介...

  • Linux和shell学习笔记

    Linux和shell学习笔记 2019年5月31日 1、载入内存(虚拟内存) 对于读写速度,内存 > 固态硬盘 ...

  • Linux操作系统命令汇总

    SHELL脚本学习笔记 标签(空格分隔): linux shell脚本 1. 常用命令汇总 alias 设置别名u...

  • Shell入门笔记

    Shell脚本:Linux Shell脚本学习指南菜鸟教程 - Shell教程Linux入门 - Shell脚本是...

  • shell基础

    Linux学习 一、shell介绍 Linux shell基础 什么是shell shell是一个命令解释器,提供...

  • shell script学习笔记

    shell学习笔记 什么是shell? shell是运行在linux服务器上的用c语言编写的程序,即可以是服务器端...

网友评论

      本文标题:【Linux shell学习笔记-16-gawk进阶5】

      本文链接:https://www.haomeiwen.com/subject/ehqgdltx.html