awk分为BEGIN部分,正则匹配部分,END部分三部分。
我一般在BEGIN部分定义一些变量,正则部分用于匹配和执行一些解析和统计,END部分用于输出结果。
总体结构:
awk 'BEGIN{xxxx;xxxx;}{xxxx;xxxx;} /匹配字符串/{xxxx;xxxx;} END{xxxx;xxxx;}' 待处理的输入文件 或 其他命令的结果 | awk 'BEGIN{xxxx;xxxx;}{xxxx;xxxx;} /匹配字符串/{xxxx;xxxx;} END{xxxx;xxxx;}'
例如:
1、使用过程中难点主要是对不同行做不同的解析和输出处理:
http://bbs.chinaunix.net/thread-4186958-1-1.html
2、
awk '{print NR}' filename; //打印行号
awk ‘{print $0}' filename; //打印整行
3、if语句
[chengmo@localhost nginx]# awk 'BEGIN{ test=100; if(test>90) { print "very good"; } else if(test>60) { print "good"; } else { print "no pass"; } }' very good
更多的if/for/while/do操作:
https://www.cnblogs.com/chengmo/archive/2010/10/04/1842073.html
4、awk的变量(包括数组)不需要声明可以直接使用
https://www.cnblogs.com/pangbing/p/7015745.html
5、awk中判断字符长度: length(变量名)
http://bbs.chinaunix.net/thread-271694-1-1.html