awk学习

示例:

[XXX@localhost ~]$ ll | awk 'BEGIN{aa= 1; bb = 2; printf"hello world\n";} {aa++; bb+=2;} END{printf"aa=%s, bb=%s\n", aa, bb;}'

 

hello world
aa=5, bb=10

说明:

BEGIN {}内是执行前,仅执行一次

第二个 {} 是每行都执行一次

END{} 内是执行后,仅执行一次

{} 内语句用“;” 分隔;

printf 的输出格式控制与C语言格式控制类似;

如:

[XXX@localhost ~]$ ll | awk 'END{printf"%10s %03d\n", "hello world", 10;}' 

hello world 010

 

例:

[XXX@localhost WiX]$ ll | awk 'NR!= 1 {printf"%s %s %s %s %s %s %s\n", $1, $2, $5, $6, $7, $8, $9}'           
-rw-r--r-- 1 19541 Jan 16 2014 cmCPackWIXGenerator.cxx
-rw-r--r-- 1 2616 Jan 16 2014 cmCPackWIXGenerator.h
-rw-r--r-- 1 2822 Jan 16 2014 cmWIXRichTextFormatWriter.cxx
-rw-r--r-- 1 1263 Jan 16 2014 cmWIXRichTextFormatWriter.h
-rw-r--r-- 1 3859 Jan 16 2014 cmWIXSourceWriter.cxx
-rw-r--r-- 1 1540 Jan 16 2014 cmWIXSourceWriter.h 

 说明: 输出 ll 的结果,且不显示第一行结果,$X 代表ll 结果的第X列

 

例: 

[XXX@localhost WiX]$ ll | awk 'BEGIN{num=0;} $9~/.cxx/{num++;} END{printf"num:%d\n", num}'
num:3

 说明:输出ll 结果中第9列含cxx 的文件数目

 

参考:http://coolshell.cn/articles/9070.html

 

posted @ 2015-08-29 07:06  god510  阅读(116)  评论(0)    收藏  举报