三剑客之awk
简介
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。
awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程 序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
语法格式
awk [参数] [处理规则] [操作对象]
参数
-F :指定文本的分隔符(默认以空格为分隔符)
脚本
关于awk脚本,我们需要注意两个关键字,一个是BEGIN,一个是END
-
-
- BEGIN{这里面放执行前的语句}
- /处理规则/
- {这里放处理每一行要执行的语句}
- END{这里放处理完后要执行的语句}
-
脚本中的顺序一般都是按照上方的顺序执行的,每次执行必须要有其中的一个语句,也可以拥有多个语句,{}是一个循环
常见内置变量
$ : 取出变量
$0 : 当前行的记录
$n : 用-F分割符分割后的第n个字段
NR :记录已经读出的行号(不是内部的行号,是外部自己定义的行号)
NF :记录当前行的字段数,就是有多少列
FS : 文本内容分隔符,和参数-F的作用一样,优先级比-F要高(默认是空格)
OFS:输出分隔符
定位表达式
比较表达式
> :大于
< : 小于
>= : 大于等于
<= : 小于等于
~ : 使用正则匹配
!~ :不使用正则匹配
条件表达式
== :等于
!= : 不等于
> :大于
< : 小于
>= : 大于等于
<= : 小于等于
逻辑表达式
&& : 并且
|| :或者
! : 非
算数表达式
+ :加
- :减
* :乘
/ :除下·
% :取余
常用的内置函数
print :打印输出
printf :格式化打印输出
printf的修饰符
- :左对齐
+ :右对齐
%s:匹配字符串
%d :匹配数字
案例
将etc目录下的passwd文件里的第一列于最后一列以左对齐的方式用‘|’隔开且每个区域起码有15个字节格式化输出

条件语句与循环
if语句格式
单条件语句: if (条件){满足条件执行操作}
双条件语句 : if(条件1){满足条件1执行操作}else{不满足条件1执行操作}
多条件语句: if(条件1){满足条件1执行操作}else if(条件2){满足条件2执行操作}else{不满足条件1与条件2后执行操作}
案例 比较两个数字大小


for循环
for 语句首先执行初始化动作( initialisation ),然后再检查条件判断。如果条件为真,则执行,然后执行递增( increment )或者递减( decrement )操作。只要条件为 true 循环就会一直执行。每次循环结束都会进条件检查,若条件为 false 则结束循环。
for循环语句格式
for(i="初始值;条件判断;游标"){}
案例循环打印10到1

while循环
While 循环首先检查条件 是否为 true ,若条件为 true 则执行。此过程一直重复直到条件为 flase 才停止。
while循环语法格式
while(条件判断){}
案例循环打印10到1

PS:if ,for,while都必须在循环里面

浙公网安备 33010602011771号