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【options】’BENGIN‘{action;...}pattern{action;...}END{action;...}‘file...
BENGIN:处理文件之前的操作(通常用来做表头)
END:处理完后的操作(通常用来做汇总)
工作原理:从文件中自动读取第一行到内存中,然后把行切割成若干字段(列/域/属性)用awk自带变量$1~$n来表示。$0代表一整行。处理完第一行会自动读取第二行进行处理。
基本格式:awk【options】‘program‘file...(program由patter和action组成)
program:pattern(处理方式),当内存中的行满足patter定义时才会对行进行处理,简单来说就是满足指定的条件才会进行处理。
action(动作):主要是用来打印,一种是无格式的打印(print),一种是有格式的打印(printf)可以指定打印格式。例如:左/右对齐宽度等。
示例:awk ’{print “hello,awk”}‘ ,输入命令后没有反应,需要输入才有反应。因为没有跟文件所以读取标准输入,前面没有定义pattern,所以输入的都符合条件,然后做出‘打印‘动作。
awk ‘{print 2**3}‘(文件或标准输入) :指数运算,打印行数取决于文件行数或初入行数。
awk‘{print 2*3}‘:(同上)乘法运算。(除法运算支持小数)
awk‘{print }‘ +文件名/awk‘{print $0}‘+文件名:打印文件所有行
awk‘{print $[1~n]}‘+文件名:打印文件指定1~n列。默认空白字符为分隔符
awk -f:‘{print $[1~n]}‘ +文件名:同上。【-f:】指定:为分隔符
awk -f:‘{print $[1~n],$[1~n]}‘+文件名:打印多列用逗号隔开。
awk -f:‘{print $[1~n]“:”$[1~n]}‘+文件名 :两列之间用":"作为分隔符