红联Linux门户
Linux帮助

(原)菜鸟学写linux脚本(二)

发布时间:2010-03-08 12:31:02来源:红联作者:yuchao668
[i=s] 本帖最后由 yuchao668 于 2010-3-8 12:33 编辑 [/i]

[size=5][/size]awk的格式
awk程序的组成部分包括awk命令,括在引号里的(或写在文件)中的程序指令以及输入文件的名字。如果没有指定输入文件,输入则来自标准输入。
awk命令可以在命令行输入,也可以写在awk脚本文件里。要处理的文本行则来自五年间,管道或标准输入。
一 从文件输入
下面列子里的美元符号($)是命令提示符。
格式
$ awk 'pattern' filename
$ awk '{action}' filename
$ awk 'pattern {action}' filename
以下列子均已文件students为输入:[code] $ cat students
David Green 2341 5/6/1987 20082480
Marry Adams 5452 6/12/1989 20082445
Bill Gates 3231 7/9/1986 20082465
Yao Ming 3443 8/6/1990 20081489[/code]例1[code] $ awk '/Marry/' students
Marry Adams 5452 6/12/1989 20082445[/code]这个命令使awk 打印出所有包含模式Marry 的行。

例2[code]$ awk '{print $1}' students
David
Marry
Bill
Yao[/code]此命令使awk打印出students文件的第一个字段,字段从每一行的左端开始,默认的字段间以空格符来分割,也可以指定分号为分隔符。第n个字段用$n来表示。
$ awk '/Bill/{print $1, $2}' students
Bill Gates
当文件的某一行含有模式Bill 时,awk打印出该行的前两个字段。这里的字段分割符是空格。

二 从命令输入
我们可以将一条或多条命令的输出通过通道变为awk的输入,在shell里常常用awk来处理命令。
格式
$ command | awk 'pattern'
$ command | awk '{action}'
$ command |awk 'pattern {action}'

例 3[code]$ df | awk '$3> 1500000'
/dev/sda5 51387360 40717440 10669920 80% /mnt/win_d

/dev/sda6 25587488 24941536 645952 98% /mnt/win_e
[/code][code] $ ps | awk '$1>2250'
2251 pts/1 00:00:00 awk

2253 pts/1 00:00:00 ps

2254 pts/1 00:00:00 awk[/code]df 和ps命令的输出结果都通国管道传给里awk来处理,进而筛选出我们想要的数据。
怎么样?当要处理的数据很多的时候,用awk是不是很简单?
本文简单的介绍了awk命令的使用格式。
文章评论

共有 3 条评论

  1. linuxcui 于 2010-03-08 15:02:09发表:

    再接再厉,希望更多的人能有原创文章,也希望有更多的信息反馈,改进我们的产品

  2. yuchao668 于 2010-03-08 14:39:46发表:

    2# linuxcui


    嘿嘿。。多谢。前几天有事,所以没时间写。

  3. linuxcui 于 2010-03-08 13:17:17发表:

    嘿嘿,终于期待的第二篇出现了,比第一篇丰富多了,再送帽子一顶~~