一、简介
二、语法
三、action:执行动作
四、选项
五、内置变量NF
一、简介
awk常用于分析数据生成报表,它将文件逐行读入,使用分隔符将数据分段后,进行处理。awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母,Linux中的awk通常说的是gawk。
二、语法
awk [options] ‘/pattern/{action}’/path/to/file
地址定界/pattern/:
pattern1,pattren2:指定的行
/pattern/:可以仅仅是模式匹配的行
expression:可以表达式
[root@TESTHOST ~]# awk -F: ‘$3>500{print $1,$3,$7}‘ /etc/passwd #分段后,用表达式比较第3段uid的值, student 501 /bin/bash
BEGIN:在处理任意行之前进行的操作
[root@TESTHOST ~]# awk -F: ‘BEGIN{print "username uid shell"}$3>500{print $1,$3,$7}‘ /etc/passwd #此处意为在处理数据前,在行首先打印标题内容 username uid shell student 501 /bin/bash You have new mail in /var/spool/mail/root
END:行数据处理完后进行收尾操作
[root@TESTHOST ~]# awk -F: ‘$3>500{print $1,$3,$7}END{print "username uid shell"}‘ /etc/passwd #此处意为行数据处理完后,在末行打印标题内容 student 501 /bin/bash username uid shell
三、action:执行动作
print:打印内容到屏幕
printf:按照格式打印内容到屏幕
四、选项
-F:指定分隔符
[root@TESTHOST ~]# awk -F: ‘/bash/{print $1,$3,$7}‘ /etc/passwd #匹配内容中有“bash”的行,以分隔符“:”分段,打印第1、第3、第7段内容 root 0 /bin/bash mockbuild 500 /bin/bash student 501 /bin/bash
五、内置变量NF
NF:Number of Filed,段数
$NF:最后一列
[root@TESTHOST init.d]# echo $PWD #此路径由3个分号分隔成4段内容 /etc/rc.d/init.d [root@TESTHOST init.d]# echo $PWD | awk -F/ ‘{print $1}‘ #从结果看出第一段为分号前内容 [root@TESTHOST init.d]# echo $PWD | awk -F/ ‘{print $NF}‘ #$NF表示最后一段 init.d [root@TESTHOST init.d]# echo $PWD | awk -F/ ‘{print NF}‘ #NF表示分隔的段数 4 [root@TESTHOST init.d]#
本文出自 “Arvin Lau” 博客,请务必保留此出处http://64314491.blog.51cto.com/2784219/1639406
原文地址:http://64314491.blog.51cto.com/2784219/1639406