例子:
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"]}‘
本文出自 “一路向前” 博客,请务必保留此出处http://9541572.blog.51cto.com/9531572/1615921
原文地址:http://9541572.blog.51cto.com/9531572/1615921