例子:

awk '{print $0}' passwd |tee haha

                                                                #将结果输出在终端,并保存到文件haha

awk 'BEGIN{FS=":";OFS="/t";print "start..."}{sum+=1;print NR}END{print "total:" sum}' passwd

                                                                #输出每行行号,并统计行数,显示时以/t分隔

awk 'NR==3{print $0}' passwd

                                                                #显示第三行

awk -F: '{print $NF}' passwd

                                                                #显示最后一列

awk -F: '$3 > 100{print $1 > "haha";print $0 }' passwd    

                                                                #将$3>100的$1重定向到haha,并显示$0

 

变量:

NR              当前处理的行数,如果处理的是多个文件,则统一计数(1-50)

FNR            当前处理的行数,如果处理的是多个文件,则每个文件分别计数(1-24,1-26)

NF               当前处理行的域数,即字段个数(一行)

RS               默认情况下awk是把一行看做一个记录,设置了RS就按照RS分割记录

ORS            输出记录分割符

ARGC         awk命令的参数个数

ARGV         将本条命令作为一个数组

                        [root@localhost ~]# awk -F: 'END{print ARGV[0]}' passwd inittab

                        awk

                        [root@localhost ~]# awk -F: 'END{print ARGV[1]}' passwd inittab

                        passwd

                        [root@localhost ~]# awk -F: 'END{print ARGV[2]}' passwd inittab

                        inittab

ARGIND     当前被处理的文件的ARGV标示符,即数组下标

                   awk '{if(ARGIND==1){print "正在处理文件passwd"}if(ARGIND==2){print "正在处理文件inittab"}}' passwd inittab            ##显示当前正在处理的文件,文件处理顺序从前往后

FILENAME   当前处理的文件名

ENVIRON     查看当前shell环境变量及其值的关联数组

                 例子:  awk  'BEGIN{print ENVIRON["PATH"]}'