友情提示:本站最近进行了改版升级,如出现显示异常,请刷新页面或清除一下缓存!

  awk的语法结构如下:

awk [ -F Ere ] [ -v Assignment ] ... { -f ProgramFile | 'Program' } [ [ File ... | Assignment ... ] ] ...
  其中,"[]"中的内容为可选项,"..."为可重复,"{}"中为awk程序指令,"Ere"为扩展的正则表达式,"File"为需要处理的输入文件,"Assignment"为表达式赋值语句。

  假设我们有两个文件v14和v15,分别记录了14点和15点,访问Coding Ants的用户的一些信息,文件内容如下:

CodingAnts@ubuntu:~/awk$ cat v14
guangdong	113.65.141.*	14:35:27	www.baidu.com
shanghai	123.126.50.*	14:18:23	www.google.com.hk
shanghai	117.136.0.*	14:17:23	www.google.com
CodingAnts@ubuntu:~/awk$ cat v15
guangdong	121.8.171.*	15:18:23	www.google.com.hk
guangdong	183.32.97.*	15:11:23	www.google.com
tianjing	111.166.108.*	15:10:22	www.baidu.com

1、查看14点所有来自上海的访问信息

CodingAnts@ubuntu:~/awk$ awk '/shanghai/ {print $3,$2}' v14
14:18:23 123.126.50.*
14:17:23 117.136.0.*
使用的语法:awk 'Program' File

2、查看14点和15点所有来自广东的访问信息

CodingAnts@ubuntu:~/awk$ awk '/guangdong/ {print $3,$2}' v14 v15
14:35:27 113.65.141.*
15:18:23 121.8.171.*
15:11:23 183.32.97.*
使用的语法:awk 'Program' File ...

3、查看14:31-14:59的访问者信息

CodingAnts@ubuntu:~/awk$ awk -F : '$2>30 {print $0}' v14
guangdong	113.65.141.*	14:35:27	www.baidu.com
使用的语法:awk [-F Ere] 'Program' File

  通过-F选项,指定记录的字段分隔符为 : ,则$2即对应访问时间的分钟信息,再通过awk程序指令的关系表达式模式即可筛选出所有分钟>30的记录。

4、查看任意时段开始的访问者信息

CodingAnts@ubuntu:~/awk$ awk -F : -v min=18 '$2>=min {print $0}' v14
guangdong	113.65.141.*	14:35:27	www.baidu.com
shanghai	123.126.50.*	14:18:23	www.google.com.hk
使用的语法:awk [-F Ere] [ -v Assignment ] 'Program' File

  这里通过定义一个变量min,可以查找到14:min-14:59的所有访问者信息。

转载请注明:Coding Ants » awk命令语法详解及示例(上)

相关文章

我来说说

(便于我们更好的交流)

没有交流就没有进步,在此输入您对本文的看法!
取消