本章你要掌握的内容以下: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命令格式和选项
语法形式:
经常使用命令选项:
1 -F fs fs指定输入分隔符,fs能够是字符串或正则表达式,如-F:
2 -v var=value 赋值一个用户定义变量,将外部变量传给awk
3 -f scripfile 从脚本文件中读取awk命令
二 awk的基本用法
三 awk的变量:分为内置和自定义变量。
内置的变量有下面这些:
FS:输入字段分割符
OFS:输出字段分隔符
RS:输入记录分隔符,指定输入时的换行符,原来的行符仍有效
ORS:输出记录分隔符,输出时用指定符号代替换行符
NF:字段数量
NR:行号
FNR:各文件分别计数,行号
FILENAME:命令行参数的个数
ARGC命令行参数的个数
ARGV:数组,保存的是命令行所给定的个参数
举例说明:
1 在a.txt中用“;”作分隔符,打印出第1行和第3行。
2 ORS的使用方法
3 NF的使用方法,在etc/passwd中列出字段数量,
4 NR的使用方法
5 FNR的用法
6 ARGV的用法
自定义变量
举例说明,注意这里面加“,”和不加的输出结果的区别
四 awk的格式化
print和printf的区别是什么:print能自动换行,只显示字符,printf不能自动换行,可是很是强大,能够指定格式,是个内部命令。
格式符:
%c: 显示字符的ASCII码
%d,%i:显示十进制整数
%e,%E:显示科学计数法数值
%f:显示为浮点数
%g,%G:以科学计数法或浮点形式显示数值
%s:显示字符串
%u:无符号整数
%%:显示%自身
修饰符:
#[.#]:第一个数字控制显示的宽度;第二个#表示小数点后精度,#表示数字
-:左对齐(默认右对齐)
+:显示数值的正负符号
举例说明:
操做符分为下面这些:
算数操做符
字符串操做符
赋值操做符
比较操做符
模式匹配符
逻辑操做符
一 算数操做符
二 字符串操做符:没有符号的操做符,字符串连接。
若是你不理解能够看一下这个例子就明白了。
三 赋值操做符
四 比较操做符
举例说明请打印出奇偶数:
解释说明:
由于"i=!i"中第一次i是空的,那非空就是真,因此输出第一行。第二次本来就是真的,非真就是假的空的。就不会输出显示。第三次是空。右边非空。因此是真的就会打印第三行,依次打印出奇数行。而在奇数前加一个非,就会显示偶数行。
举例说明:乘除算法
你们先把这些上面的弄清楚弄明白吧,我写的比较多而且相对来讲比较简单了,加些来的一篇博客会写下半部份内容,由于些博客是严谨的,不能随随便便写写就能够了,下半部分涉及到函数,内容相对来讲比较难,前面这些比较简单,你们先看下,谢谢。
awk控制语句:if-else的用法
awk控制语句while的用法:
条件为真,进入循坏,条件为假,退出循坏。
计算1加到100和为多少
awk控制语句for的用法: