linux命令之a(chǎn)wk命令
linux命令之a(chǎn)wk命令
awk命令是一種編程語言,在linux系統(tǒng)中可以對(duì)文本或者數(shù)據(jù)進(jìn)行處理。下面由學(xué)習(xí)啦小編為大家整理了linux命令之a(chǎn)wk命令的相關(guān)知識(shí),希望對(duì)大家有所幫助!
linux命令之a(chǎn)wk命令詳解
awk是一種編程語言,用于在linux/unix下對(duì)文本和數(shù)據(jù)進(jìn)行處理。數(shù)據(jù)可以來自標(biāo)準(zhǔn)輸入(stdin)、一個(gè)或多個(gè)文件,或其它命令的輸出。它支持用戶自定義函數(shù)和動(dòng)態(tài)正則表達(dá)式等先進(jìn)功能,是linux/unix下的一個(gè)強(qiáng)大編程工具。它在命令行中使用,但更多是作為腳本來使用。awk有很多內(nèi)建的功能,比如數(shù)組、函數(shù)等,這是它和C語言的相同之處,靈活性是awk最大的優(yōu)勢(shì)。
awk命令格式和選項(xiàng)
語法形式
awk [options] 'script' var=value file(s) awk [options] -f scriptfile var=value file(s)
常用命令選項(xiàng)
-F fs fs指定輸入分隔符,fs可以是字符串或正則表達(dá)式,如-F:
-v var=value 賦值一個(gè)用戶定義變量,將外部變量傳遞給awk
-f scripfile 從腳本文件中讀取awk命令
-m[fr] val 對(duì)val值設(shè)置內(nèi)在限制,-mf選項(xiàng)限制分配給val的最大塊數(shù)目;-mr選項(xiàng)限制記錄的最大數(shù)目。這兩個(gè)功能是Bell實(shí)驗(yàn)室版awk的擴(kuò)展功能,在標(biāo)準(zhǔn)awk中不適用。
linux命令之a(chǎn)wk命令模式和操作
awk腳本是由模式和操作組成的。
模式
模式可以是以下任意一個(gè):
/正則表達(dá)式/:使用通配符的擴(kuò)展集。
關(guān)系表達(dá)式:使用運(yùn)算符進(jìn)行操作,可以是字符串或數(shù)字的比較測(cè)試。
模式匹配表達(dá)式:用運(yùn)算符~(匹配)和~!(不匹配)。
BEGIN語句塊、pattern語句塊、END語句塊:參見awk的工作原理
操作
操作由一個(gè)或多個(gè)命令、函數(shù)、表達(dá)式組成,之間由換行符或分號(hào)隔開,并位于大括號(hào)內(nèi),主要部分是:
變量或數(shù)組賦值
輸出命令
內(nèi)置函數(shù)
控制流語句
附:linux命令awk腳本基本結(jié)構(gòu)
awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file
一個(gè)awk腳本通常由:BEGIN語句塊、能夠使用模式匹配的通用語句塊、END語句塊3部分組成,這三個(gè)部分是可選的。任意一個(gè)部分都可以不出現(xiàn)在腳本中,腳本通常是被單引號(hào)或雙引號(hào)中,例如:
awk 'BEGIN{ i=0 } { i++ } END{ print i }' filename
awk "BEGIN{ i=0 } { i++ } END{ print i }" filename