码迷,mamicode.com
首页 > 其他好文 > 详细

Awk的使用

时间:2015-03-04 22:47:42      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

今天来讲Awk的使用,首先来介绍awk的工作原理。

 

Awk的工作原理:将文件一行一行读入,然后对每一行再分段,段名称为$加上数字,分段依据是空格或者Tab键。

 

用法:awk ‘/模式/{命令1;命令2;...}‘ filename

其中上面的模式没有的话就是对全文所有行进行操作,多条命令用分号隔开。

 

例如who命令结果如下

 

 技术分享

 

比如我们想得到日期,那么命令如下

 

 技术分享

 

awk默认分隔符为空格或者Tab,有时候需要自己指定分隔符。比如

 

  技术分享

 

可以看出在/etc/passwd文件中,每一行是用冒号隔开的,一共有7部分,如果想得到最后一部分的内容,那么需要指定分隔符,使用如下命令

 

 技术分享

 

F:表示以冒号作为分隔符。不过这是对所有行进行操作,有时候我们只需要指定一些行来操作。如下

 

 技术分享

 

表示只操作含有root的行。

 

上面用到了$符号,注意$0表示一行的所有内容。例如

 

 技术分享

 

那么假设我们有时候需要找某一列中含有特定字符串的行怎么办呢 ?比如

 

 技术分享

 

表示打印每行第一部分含有root的所有行。

 

Awk在把一行内容读入内存之前,可以先做一些其它的操作,具体格式如下

 

 awk ‘BEGIN{命令}/模式/{命令1;命令2;...}‘ filename

 

   技术分享

 

BEGIN{命令} 表示在读入当前行的数据之前,先执行BEGIN中的命令。

 

除了输入时的分隔符,输出时也有分隔符,默认是空格,如果需要重新指定,那么用如下命令

 

 技术分享

 

除了BEGIN,还有END操作符。如下命令

 

 技术分享

 

在开始处,我们学过,awk是把文件一行一行读入的,每一行按照特定的字符分隔成很多段,那么我们怎么知道某一行是分成多少段呢? 那么就用NF这个变量。例如

 

 技术分享

 

表示who命令得到的文件每一行分为5个字段。

 

除了NF之外,还有NR,NR表示当前的处理行在源文件中是第几行。例如

 

   技术分享

 

除了系统自带的变量外,如NF,NR,awk还可以自定义变量。例如

 

 技术分享

 

好了,到了这里,关于Awk的基本用法已经就讲完了,每个部分都需要深刻理解才行,Mayuyu希望都能熟练运用。

 

 

Awk的使用

标签:

原文地址:http://blog.csdn.net/achelloworld/article/details/44059859

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!