新聞中心
awk命令和sed命令一樣,也是逐行掃描文件的,從第一行到最后一行,尋找匹配特定模板的行,并在這些行上運(yùn)行“選擇”動(dòng)作。如果一個(gè)模板沒有指定動(dòng)作,這些匹配的行就被顯示在屏幕上。如果一個(gè)動(dòng)作沒有模板,所有被動(dòng)作指定的行都被處理。

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比阜陽網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式阜陽網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋阜陽地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
Awk模式
Awk支持不同類型的模式,包括正則表達(dá)式、關(guān)系表達(dá)式、范圍和特殊表達(dá)式模式。
在下面的例子中,將創(chuàng)建一個(gè)名為“ teams.txt”的文件,文件內(nèi)容如下:
[root@localhost ~]# cat teams.txt
Bucks Milwaukee 60 22 0.732
Raptors Toronto 58 24 0.707
76ers Philadelphia 51 31 0.622
Celtics Boston 49 33 0.598
Pacers Indiana 48 34 0.585
正則表達(dá)式模式
Awk的正則表達(dá)式模式用斜線(//)包含起來,例如:要顯示包含“0.5”的每條記錄,可以運(yùn)行以下命令:
[root@localhost ~]# awk '/0.5/ {print $0}' teams.txt
Celtics Boston 49 33 0.598
Pacers Indiana 48 34 0.585
要顯示包含“0.5”的每條記錄的第一個(gè)和第二個(gè)字段:
[root@localhost ~]# awk '/0.5/ {print $1,$2}' teams.txt
Celtics Boston
Pacers Indiana
顯示一個(gè)或者多個(gè)數(shù)字開頭的記錄,并打印第一列:
[root@localhost ~]# awk '/^[0-9]/ {print $1}' teams.txt
76ers
關(guān)系表達(dá)式模式
關(guān)系表達(dá)式模式通常用于匹配特定字段或變量的內(nèi)容。 常用的關(guān)系運(yùn)算符有:
~:包含!~:不包含>:大于:小于>=:大于等于:小于等于=:等于!=:不等于使用~“包含”比較運(yùn)算符。例如,顯示第二個(gè)字段中包含“ia”字符的每條記錄:
[root@localhost ~]# awk '$2 ~ /ia/ {print $0}' teams.txt
76ers Philadelphia 51 31 0.622
Pacers Indiana 48 34 0.585
若要匹配不包含給定字符的記錄,可以使用!~不包含操作符。例如,顯示第二個(gè)字段中不包含“ia”字符的每條記錄:
[root@localhost ~]# awk '$2 !~ /ia/ {print $0}' teams.txt
Bucks Milwaukee 60 22 0.732
Raptors Toronto 58 24 0.707
Celtics Boston 49 33 0.598
使用!=“不等于”操作符,
awk命令使用實(shí)例awk命令使用實(shí)例
使用>=“大于等于”操作符,顯示第四個(gè)字段大于等于30的記錄:
[root@localhost ~]# awk '$4 >= 30 {print $0}' teams.txt
76ers Philadelphia 51 31 0.622
Celtics Boston 49 33 0.598
Pacers Indiana 48 34 0.585
范圍模式
范圍模式由逗號(hào)分隔的兩組字符組成,從與第一個(gè)字符串匹配的記錄開始,直到與第二個(gè)字符串的記錄匹配為止的所有記錄。
例如,顯示從“Raptors”到 “Celtics”在內(nèi)的記錄,:
[root@localhost ~]# awk '/Raptors/,/Celtics/ {print $0}' teams.txt
Raptors Toronto 58 24 0.707
76ers Philadelphia 51 31 0.622
Celtics Boston 49 33 0.598
范圍模式也可以使用關(guān)系表達(dá)式,例如,顯示第四個(gè)字段等于31到第四個(gè)字段等于34 的記錄:
[root@localhost ~]# awk '$4 == 31 , $4 == 34 {print $0}' teams.txt
76ers Philadelphia 51 31 0.622
Celtics Boston 49 33 0.598
Pacers Indiana 48 34 0.585
特殊表達(dá)式模式
Awk包括以下特殊模式。
BEGIN:在處理記錄之前執(zhí)行此操作。END:用于在處理記錄之后執(zhí)行此操作。BEGIN模式通常用于設(shè)置變量,END模式用于處理統(tǒng)計(jì)的數(shù)據(jù)。例如,下面將顯示“Start Processing.”,然后顯示第三個(gè)字段,最后顯示”End Processing.”:
[root@localhost ~]# awk 'BEGIN {print "Start Processing."};{print $3};END {print "End Processing."}' teams.txt
Start Processing.
60
58
51
49
48
End Processing.
內(nèi)置變量
Awk有許多內(nèi)置變量,允許控制程序的處理方式。下面是一些常見的內(nèi)置變量:
NF:記錄中的字段數(shù)NR:當(dāng)前記錄的編號(hào)FILENAME:當(dāng)前正在處理的輸入文件名稱FS:字段分隔符RS:記錄分隔符OFS:輸出字段分隔符ORS:輸出記錄分隔符下面是一個(gè)顯示如何打印文件名和行數(shù)的示例:
[root@localhost ~]# awk 'END {print "File" , FILENAME , "contains" , NR , "lines."}' teams.txt
File teams.txt contains 5 lines.
新聞標(biāo)題:分享一下awk命令使用實(shí)例
本文來源:http://fisionsoft.com.cn/article/cosijij.html


咨詢
建站咨詢
