程序员人生 网站导航

Awk的使用

栏目:综合技术时间:2015-04-03 08:23:03

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

 

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

 

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

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

 

例如who命令结果以下

 

 

 

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

 

 

 

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

 

 

 

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

 

 

 

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

 

 

 

表示只操作含有root的行。

 

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

 

 

 

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

 

 

 

表示打印每行第1部份含有root的所有行。

 

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

 

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

 

   

 

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

 

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

 

 

 

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

 

 

 

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

 

 

 

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

 

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

 

  

 

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

 

 

 

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

 

 

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐