您的位置:首页 > 运维架构 > Linux

awk的简单使用方法

2015-04-27 18:26 429 查看
一、简介
二、语法
三、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]#
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux awk $NF