AWK简介
awk是一个强大的文本分析工具,awk可以把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。
AWK的使用
awk [-F field-separator] 'commands' input-file(s)
其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格或tab键。
awk工作流程是这样的:读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键"
AWK使用举例
(1)使用awk来抽取文本文件中的信息
#echo "test:hello:next" >test.txt
#echo "tang:yi:bo" >>test.txt
#awk -F ":" '{print $1}' test.txt
test
tang
便可以抽取到test.txt文件中:分割的第1列内容。
(2)使用awk来抽取shell命令结果中的信息
这里使用last命令可以查看系统最近的登录信息。
#last -n 5 //显示最近5次的登录信息tang pts/0 192.168.1.105 Sat Nov 14 23:50 still logged in
tang pts/0 192.168.1.105 Sat Nov 14 22:56 - 23:50 (00:53)
root tty1 Sat Nov 14 22:55 still logged in
reboot system boot 2.6.32-504.el6.x Sat Nov 14 22:53 - 00:44 (01:50)
root tty1 Fri Aug 14 06:38 - down (00:00)
使用awk抽取其中的第2列用户名
#last -n 5 | awk '{print $2}'
pts/0
pts/0
tty1
system
tty1
如果是抽取其中的第1和第2列,且用tab键分割,则
#last -n 5 | awk '{print $1"\t"$2}'
tang pts/0
tang pts/0
root tty1
reboot system
root tty1