本篇接《awk命令语法详解及示例(上)》继续以实例讲解awk命令语法,仍然使用前文中使用的v14和v15两个文件。
awk的语法结构如下:
awk [ -F Ere ] [ -v Assignment ] ... { -f ProgramFile | 'Program' } [ [ File ... | Assignment ... ] ] ...
其中,"[]"中的内容为可选项,"..."为可重复,"{}"中为awk程序指令,"Ere"为扩展的正则表达式,"File"为需要处理的输入文件,"Assignment"为表达式赋值语句。
5、查看任意指定时段的访问者信息
CodingAnts@ubuntu:~/awk$ awk -F : -v min=18 -v max=30 '$2 >= min && $2 < max {print $0}' v14 shanghai 123.126.50.* 14:18:23 www.google.com.hk
使用的语法:awk [-F Ere] [ -v Assignment ] ... 'Program' File
6、awk程序指令位于单独文件
/guangdong/ {a++; print a ":" $0}
用vi等文本编辑器,新建一个shou.awk的文件,输入上面的内容后保存。准备好后执行下面的指令:
CodingAnts@ubuntu:~/awk$ awk -v a=0 -f show.awk v14 v15 1:guangdong 113.65.141.* 14:35:27 www.baidu.com 2:guangdong 121.8.171.* 15:18:23 www.google.com.hk 3:guangdong 183.32.97.* 15:11:23 www.google.com
使用的语法:awk [ -v Assignment ] -f ProgramFile File ...
这里不是在命令行中直接输入awk的程序指令,而是将指令写在一个文件中,awk通过-f标志来表示从ProgramFile中获取awk程序指令。注意,这里在命令行中定义的变量a,在ProgramFile中是有效的哦~,你会发现,输出中最前面显示的行号,就是通过这个变量a得来的~
最后的那个 Assignment 和前面的那个类似,只是变量生效的时间不同而已,关于这个部分在后续的关于BEGIN和END模式的时候,再单独拿出来详细说明,更多精彩内容,敬请期待!
转载请注明:Coding Ants » awk命令语法详解及示例(下)