新聞中心
awk命令是一種編程語言,用于在linux/unix下對文本和數(shù)據(jù)進(jìn)行處理而且它支持用戶自定義函數(shù)和動態(tài)正則表達(dá)式等先進(jìn)功能,是linux/unix下的一個強(qiáng)大編程工具,下面為大家詳細(xì)講解一下awk命令使用實(shí)例。

為張家港等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及張家港網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、張家港網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
Awk模式
Awk支持不同類型的模式,包括正則表達(dá)式、關(guān)系表達(dá)式、范圍和特殊表達(dá)式模式。
在下面的例子中,將創(chuàng)建一個名為“ 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”的每條記錄的第一個和第二個字段:
[root@localhost ~]# awk '/0.5/ {print $1,$2}' teams.txt
Celtics Boston
Pacers Indiana
顯示一個或者多個數(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)算符。例如,顯示第二個字段中包含“ia”字符的每條記錄:
[root@localhost ~]# awk '$2 ~ /ia/ {print $0}' teams.txt
76ers Philadelphia 51 31 0.622
Pacers Indiana 48 34 0.585
若要匹配不包含給定字符的記錄,可以使用!~不包含操作符。例如,顯示第二個字段中不包含“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
使用!=“不等于”操作符, 使用>=“大于等于”操作符,顯示第四個字段大于等于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
范圍模式
范圍模式由逗號分隔的兩組字符組成,從與第一個字符串匹配的記錄開始,直到與第二個字符串的記錄匹配為止的所有記錄。
例如,顯示從“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á)式,例如,顯示第四個字段等于31到第四個字段等于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.”,然后顯示第三個字段,最后顯示”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)前記錄的編號
-
FILENAME:當(dāng)前正在處理的輸入文件名稱
-
FS:字段分隔符
-
RS:記錄分隔符
-
OFS:輸出字段分隔符
-
ORS:輸出記錄分隔符
下面是一個顯示如何打印文件名和行數(shù)的示例:
[root@localhost ~]# awk 'END {print "File" , FILENAME , "contains" , NR , "lines."}' teams.txt
File teams.txt contains 5 lines.
網(wǎng)站欄目:詳解awk命令使用實(shí)例
分享網(wǎng)址:http://fisionsoft.com.cn/article/djoogdd.html


咨詢
建站咨詢
