awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
AWK a.k.a. Aho, Kernighan and Weinberger(awk的三位创始人)
awk [options] 'PATTERN { action }' file1 file2, ...
awk [options] 'BEGIN{action;...} PATTERN{action;...}END{action;...}' file ....
awk程序通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块三部分组成。
OPTIONS:
-F:指明输入时用到的字段分隔符
-v var=value :自定义变量
-f: scripfile or --file scriptfile 从脚本文件中读取awk命令。
awk变量
FS: field separator,读取文件本时,所使用字段分隔符。
RS: Record separator,输入文本信息所使用的换行符。
OFS: Output Filed Separator: 输出字段分割符。
ORS:Output Row Separator:输出行分割符。
NR: The number of input records,awk命令所处理的记录数(行数)。如果有多个文件,这个数目会把处理的多个文件中行统一计数。
NF:Number of Field,当前记录的field个数、一条记录的字段数目。
FNR: 与NR不同的是,FNR用于记录正处理的行是当前这一文件中被总共处理的行数。
$0:完整的输入记录
$n:当前记录的第n个字段,字段间由FS分隔
ARGC:命令行参数的数目
ARGV:包含命令行参数的数组
FILENAME:当前文件名
print和printf
print和printf都是打印输出的,不过两者用法和显示上有些不同而已。
print 格式:print item1,item2, ...
printf格式:printf “FORMAT ”,item1,item2