AWK

本章你要掌握的内容以下:linux

1    awk的介绍正则表达式

2    awk的基本用法算法

3    awk的变量编程

4    awk的格式化数组

5    awk的操做符编程语言

6    awk条件判断ide

7    awk的循坏函数

8    awk的数组测试

9    awk的函数spa

10   调用系统命令

一  awk的介绍:

你们最先据说awk的应该是在文本三剑客当中,那就是grep、sed、awk。可是awk能够说是里面最厉害的了,有人说你的linux学的有多麽的好,在awk当中均可以知足你,由于awk它是一门编程语言,它主要用于对文本和数据的扫描与处理,能够生成报告生成器,文本处理的格式化输出。awk有不少种版本,如:awk、nawk、mawk、gawk、MKS awk、take..  这其中有开源产品也有商业产品。

1.1   awk的工做原理:

awk  'BEGIN{commands}   pattern {commands}   END{commands}'

第一步:执行BEGIN{commands}语句块中的语句;

第二步:从文件或标准输入(stain)读取一行,而后执行pattern{commands}语句块,它逐行扫描,从第一行到最后一行重复这个过程,知道文件被彻底读取。

第三步:当读到输入流末尾时,执行END{commands}语句块。

解释说明:

BEGIN语句块在awk开始从输入流中读取以前被执行,这是一个可选的语句块,好比变量初始化、打印输出表格的表头等语句一般能够写在BEGIN语句块中。

pattern语句块中的通用命令时最重要的部分,它也是可选的,若是没有提供pattern语句块,则是默认执行{print}。既打印每个读取到的行,awk读取的每一行都会被执行该语句块。

END语句块在awk从输入流中读取完全部的行以后就被执行,好比打印全部行的 分析结果这类信息汇总都是在END语句块中完成,他也是一个可选的语句块。

1.2  awk的基本结构:

awk 'BEGIN{print "start"} pattern{commands} END{print "end"}'file

一个awk一般有BEGIN语句块、可以使用模式匹配的通用语句块、END语句块三部分组成,这三个部分是可选的。任意一个部分均可以不出如今脚本中。

1.3   awk的模式和操做:

awk脚本是由模式和操做组成的。那什么是模式那,下面这些都是:

1 /正则表达式/:使用通配符的扩展集。

2 关系表达式:使用运算符进行操做,能够是字符串或数字的比较测试。

3模式匹配表达式:用运算符~表示匹配和!~表示不匹配。

4 BEGIN语句块、pattern语句块、END语句块:

操做由一个或多个命令、函数、表达式组成,有以下这些:

1 变量和数组赋值

2 输出命令

3 内置函数

4控制流语句

1.4  awk命令格式和选项

语法形式:

blob.png

经常使用命令选项:

1 -F fs fs指定输入分隔符,fs能够是字符串或正则表达式,如-F:

2 -v var=value 赋值一个用户定义变量,将外部变量传给awk

3 -f scripfile 从脚本文件中读取awk命令

二  awk的基本用法

blob.png


blob.png

三   awk的变量:分为内置和自定义变量。

 内置的变量有下面这些:

  1. FS:输入字段分割符

  2. OFS:输出字段分隔符

  3. RS:输入记录分隔符,指定输入时的换行符,原来的行符仍有效

  4. ORS:输出记录分隔符,输出时用指定符号代替换行符

  5. NF:字段数量

  6. NR:行号

  7. FNR:各文件分别计数,行号

  8. FILENAME:命令行参数的个数

  9. ARGC命令行参数的个数

  10. ARGV:数组,保存的是命令行所给定的个参数

举例说明:

1 在a.txt中用“;”作分隔符,打印出第1行和第3行。

blob.png

2 ORS的使用方法

blob.png

3 NF的使用方法,在etc/passwd中列出字段数量,

blob.png

blob.png

4 NR的使用方法

blob.png

blob.png

5  FNR的用法

blob.png

blob.png

6  ARGV的用法

blob.png

blob.png

自定义变量

举例说明,注意这里面加“,”和不加的输出结果的区别

blob.png

blob.png

四  awk的格式化

print和printf的区别是什么:print能自动换行,只显示字符,printf不能自动换行,可是很是强大,能够指定格式,是个内部命令。

blob.png

格式符:

  1. %c: 显示字符的ASCII码

  2. %d,%i:显示十进制整数

  3. %e,%E:显示科学计数法数值

  4. %f:显示为浮点数

  5. %g,%G:以科学计数法或浮点形式显示数值

  6. %s:显示字符串

  7. %u:无符号整数

  8. %%:显示%自身

修饰符:

#[.#]:第一个数字控制显示的宽度;第二个#表示小数点后精度,#表示数字

-:左对齐(默认右对齐)

+:显示数值的正负符号

举例说明:

blob.png

操做符分为下面这些:

  1. 算数操做符

  2. 字符串操做符

  3. 赋值操做符

  4. 比较操做符

  5. 模式匹配符

  6. 逻辑操做符                  

一 算数操做符

blob.png


二 字符串操做符:没有符号的操做符,字符串连接。

若是你不理解能够看一下这个例子就明白了。

blob.png

三 赋值操做符

blob.png

四   比较操做符

  blob.png

举例说明请打印出奇偶数:

blob.png

解释说明:

由于"i=!i"中第一次i是空的,那非空就是真,因此输出第一行。第二次本来就是真的,非真就是假的空的。就不会输出显示。第三次是空。右边非空。因此是真的就会打印第三行,依次打印出奇数行。而在奇数前加一个非,就会显示偶数行。

举例说明:乘除算法

blob.png

你们先把这些上面的弄清楚弄明白吧,我写的比较多而且相对来讲比较简单了,加些来的一篇博客会写下半部份内容,由于些博客是严谨的,不能随随便便写写就能够了,下半部分涉及到函数,内容相对来讲比较难,前面这些比较简单,你们先看下,谢谢。

awk控制语句:if-else的用法

blob.png

awk控制语句while的用法:

条件为真,进入循坏,条件为假,退出循坏。

计算1加到100和为多少

blob.png

awk控制语句for的用法:

blob.png

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息