awk(4)-awk介绍

这篇博客介绍了awk编程语言,包括它的特点、语法、处理流程、条件类型、内置指令和变量。awk能够直接运行,具备内建的pipe功能,方便与shell交互。文章详细讲解了条件类型如逻辑运算符、匹配符号,以及如何编写awk指令。还提到了awk如何使用数组、调用shell命令和修改分割符。最后,讨论了awk处理多行数据的能力。
摘要由CSDN通过智能技术生成

1介绍
1.1 特点:awk是一种编程语言,可以直接运行不用提前编译;有内建的pipe 功能,可以将处理中数据传送给shell 处理,再将shell 处理结果传回awk,pipe让awk 能容易的使用系统资源。
通常写一些小工具,由shell 所提供的pipe 将数据传送给不同的awk 工具处理,从而解决大的问题。如果有性能要求,这些小工具也可以用c语言来改写。
sed 是处理一行的数据,awk是将一行分成几个段来处理。

1.2 语法:
awk '条件类型1 {指令1} 条件类型2{指令 2} ...' filename
awk 后面接单引号并加上大括号来设定要对数据进行的处理。后面可以接档案,也可以使用标准输入。awk 处理的是每一行的字段的数据,默认是用空格或者是Tab 键作为分割符。

1.3 awk 处理流程:
1、读取一行,将数据放入 $0,$1,$2.....   $0 是整行数据,$1,$2,$3... 就是按照分割符分割的一列列数据
2、依据条件类型,判断是否执行后面的“指令”。判断条件的值为ture(或者不为0,或者不是空字符串)。如果大括号前面没有“条件”,则指令被无条件的执行。
3、做完所有的“指令”与“条件类型”
4、如果还有行数据,重复1--3步骤,直到所有数据都被处理完。
5、如果有多个文件,则一个一个文件分别执行
6、多个脚本一个文件,一行数据顺序执行脚本中的指令

1.4条件类型
1.4.1、  awk 逻辑运算字符
 >        <        >=        <=        ==        !=
如:x>34{commond}
1.4.2、  ~ 匹配,!~ 不匹配
如:A~B 字符串A是否包含B
"banana"~/an/ 成立
1.4.3 &&,||,! 
上面两种情况条件,结果是一个逻辑值,可以和 &&,||,!  结合成一个新的逻辑值
1.4.4 两个条件
示例:
FNR>=22 && FNR<=28{print "    " $0}
可以写成
FNR==22,FNR==29{print "    " $0}
说明:这种条件类型,awk会设立一个switch,当第一个条件成立时,打开这个switch执行命令,当第二个条件成立时,就关闭这个switch命令就不执行了

1.5 awk的指令
http://blog.csdn.net/convict_eva/article/details/74988695


1.6 awk内置变量 
1)、NF 每一行($0) 拥有的列数(使用分割符分割)
2)、NR 目前处理的第几行数据(从1开始计数),如果有多个文件,则这个值一直累加。
3)、FNR 和NR的区别是:每打开一个文件 FNR 重新开始累计
4)、FS 目前的分割符,默认是空格( 或者tab)
5)、OFS 列输出分割符。默认中空格。  print $1,$2
6)、RS 行分割符。默认是换行(\n)
7)、ORS 输出时行的分割字符。默认是换行(\n)
8)、FILENAME  正在处理的文件名称(awk 后面的文件是参数是什么,这个这是就是什么。如果是从管道接收数据,值为-(标准输入))
9)、OFMT   数值输出格式,默认是%.6g。即最多输出6位小数
如:print 2/3  输出:0.666667  
RSTART   RLENTTH 参考awk 的match()函数  http://blog.csdn.net/convict_eva/article/details/74987793
10)、SUBSEP 数组是标注分隔元。默认为\034
实际上awk中数组只接受字符串为标注。如&

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值