AWK命令快速入門(mén)

清華大佬耗費(fèi)三個(gè)月吐血整理的幾百G的資源,免費(fèi)分享!....>>>

AWK

AKW是一個(gè)強(qiáng)大的文本處理工具,它的所有功能不可能在一篇文章內(nèi)講完。

本文以awk常用的幾種情形作為講解,旨在能夠適用于常用的awk文本處理。

常用命令格式:

awk -F '文本切割符' '{處理過(guò)程}’ 文件名

例如:awk -F ':' '{print}' file.txt


如果不指定文本切割符,默認(rèn)為空白符號(hào)
用$n表示切割后第n個(gè)部分
例如:jack:lucy:tom
用‘:’切割后,$1為jack $2為lucy $3為tom
由簡(jiǎn)單到復(fù)雜的過(guò)程如下


1、創(chuàng)建一個(gè)文件,方便后續(xù)操作,用last命令調(diào)出登陸信息,把最后5次的信息重定向存儲(chǔ)到file.txt


cd ~
touch file.txt
last -n 5 > file.txt
cat file.txt
root     pts/1        :0.0             Sat Sep 20 05:11   still logged in   
root     :0                            Sat Sep 20 05:11   still logged in   
root     :0                            Sat Sep 20 05:11 - 05:11  (00:00)    
reboot   system boot  2.6.18-194.el5   Sat Sep 20 05:02          (00:10)    
root     pts/1        :0.0             Sat Sep 20 02:03 - crash  (02:59)



 
2 、用默認(rèn)的空白符號(hào)作為分隔符,打印分割后的第一個(gè)部分
%%注意,一定不要忘記打文件名


awk '{print $1}' file.txt
root
root
root		
reboot
root


3 、用空白符作為分隔符,打印第二個(gè)部分
awk -F ' ' '{print $2}' file.txt
pts/1
:0
:0
system
pts/1


4 、用空白符作為分隔符,正則匹配開(kāi)頭是root的行,打印第二個(gè)部分
awk -F ' ' '/^root/{print $2}' file.txt 
pts/1
:0
:0



5 、用空白符作為分隔符,打印開(kāi)始執(zhí)行的信息,正則匹配開(kāi)始是root的行,打印第二個(gè)部分,打印結(jié)束執(zhí)行的信息

這里的執(zhí)行順序是:BEGIN內(nèi)容->每一行讀取,正則匹配,切割,處理,直到讀到文件末尾->END內(nèi)容

awk -F ' ' 'BEGIN{print "Begin..."} /^root/{print $2} END{print "End!"}' file.txt 
Begin...
pts/1
:0
:0
pts/1
End!


6 、用冒號(hào)作為分隔符,打印開(kāi)始執(zhí)行的信息,正則匹配開(kāi)始是root的行,打印第二個(gè)部分,打印結(jié)束執(zhí)行的信息
awk -F ':' 'BEGIN{print "Begin..."} /^root/{print $2;print "one line"} END{print "End!"}' file.txt 
Begin...
0.0             Sat Sep 20 05
one line
0                            Sat Sep 20 05
one line
0                            Sat Sep 20 05
one line
0.0             Sat Sep 20 02
one line
End!