Linux中awk工具的使用详解( 四 )


END 关键字使用方法
awk 的 END 指令和 BEGIN 恰好相反,在 awk 读取并且处理完文件的所有内容行之后,才会执行 END 后面的脚本代码段
$ awk 'END {print "End file"}' /etc/passwdEnd file
一定要多动手在电脑上敲一敲这些命令,对身体好 。脑子是个好东西,要多用 。。。
$ awk 'BEGIN {print "Start read file"} {print $0} END {print "End file"}' /etc/passwdStart read fileroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinEnd file
在 awk 中使用变量
可以在 awk 脚本中声明和使用变量
$ awk '{msg="hello world"; print msg}' /etc/passwdhello worldhello worldhello worldhello worldhello world
awk 声明的变量可以在任何多个花括号脚本中使用
$ awk 'BEGIN {msg="hello world"} {print msg}' /etc/passwdhello worldhello worldhello worldhello worldhello world
在 awk 中使用数学运算
在 awk 中,像其他编程语言一样,它也支持一些基本的数学运算操作
$ awk '{a = 12; b = 24; print a + b}' company.txt36363636
上面这段脚本表示,先声明两个变量 a = 12 和 b = 24,然后用 print 打印出 a 加上 b 的结果 。
看到上面的输出结果,你很可能又是一脸的懵逼,为什么会重复输出 4 次同样的计算结果 。所以说小时不学好,长大做IT 。知识这东西真到了要用的时候,能亮瞎别人的双眼,好了,不废话 。请记住 awk 是针对文件的每一行来执行一次单引号 里面的脚本代码,每读取到一行就会执行一次,文件里面有多少行就会执行多少次,但 BEGIN 和 END 关键字后面的 脚本代码除外,如果被处理的文件中什么都没有,那 awk 就一次都不会执行 。。。
awk 还支持其他的数学运算符
+加法运算符
-减法运算符
*乘法运算符
/除法运算符
%取余运算符
在 awk 中使用条件判断
比如有一个文件 .txt 内容如下
yahoo100 4500google150 7500apple180 8000twitter 120 5000
我们要判断文件的第 3 列数据,也就是平均工资小于 5500 的公司,然后将其打印输出