Copyright ? 2004 本文遵從GPL協(xié)議,歡迎轉(zhuǎn)載、修改、散布。
第一次發(fā)布時(shí)間:2004年8月6日
Table of Contents
awk是一種編程語(yǔ)言,用于在linux/unix下對(duì)文本和數(shù)據(jù)進(jìn)行處理。數(shù)據(jù)可以來(lái)自標(biāo)準(zhǔn)輸入、一個(gè)或多個(gè)文件,或其它命令的輸出。它支持用戶自定義函數(shù)和動(dòng)態(tài)正則表達(dá)式等先進(jìn)功能,是linux/unix下的一個(gè)強(qiáng)大編程工具。它在命令行中使用,但更多是作為腳本來(lái)使用。awk的處理文本和數(shù)據(jù)的方式是這樣的,它逐行掃描文件,從第一行到最后一行,尋找匹配的特定模式的行,并在這些行上進(jìn)行你想要的操作。如果沒(méi)有指定處理動(dòng)作,則把匹配的行顯示到標(biāo)準(zhǔn)輸出(屏幕),如果沒(méi)有指定模式,則所有被操作所指定的行都被處理。awk分別代表其作者姓氏的第一個(gè)字母。因?yàn)樗淖髡呤侨齻€(gè)人,分別是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供了Bell實(shí)驗(yàn)室和GNU的一些擴(kuò)展。下面介紹的awk是以GUN的gawk為例的,在linux系統(tǒng)中已把a(bǔ)wk鏈接到gawk,所以下面全部以awk進(jìn)行介紹。
awk [options] 'script' var=value file(s)
awk [options] -f scriptfile var=value file(s)
指定輸入文件折分隔符,fs是一個(gè)字符串或者是一個(gè)正則表達(dá)式,如-F:。
賦值一個(gè)用戶定義變量。
從腳本文件中讀取awk命令。
對(duì)nnn值設(shè)置內(nèi)在限制,-mf選項(xiàng)限制分配給nnn的最大塊數(shù)目;-mr選項(xiàng)限制記錄的最大數(shù)目。這兩個(gè)功能是Bell實(shí)驗(yàn)室版awk的擴(kuò)展功能,在標(biāo)準(zhǔn)awk中不適用。
在兼容模式下運(yùn)行awk。所以gawk的行為和標(biāo)準(zhǔn)的awk完全一樣,所有的awk擴(kuò)展都被忽略。
打印簡(jiǎn)短的版權(quán)信息。
打印全部awk選項(xiàng)和每個(gè)選項(xiàng)的簡(jiǎn)短說(shuō)明。
打印不能向傳統(tǒng)unix平臺(tái)移植的結(jié)構(gòu)的警告。
打印關(guān)于不能向傳統(tǒng)unix平臺(tái)移植的結(jié)構(gòu)的警告。
打開兼容模式。但有以下限制,不識(shí)別:x、函數(shù)關(guān)鍵字、func、換碼序列以及當(dāng)fs是一個(gè)空格時(shí),將新行作為一個(gè)域分隔符;操作符**和**=不能代替^和^=;fflush無(wú)效。
允許間隔正則表達(dá)式的使用,參考(grep中的Posix字符類),如括號(hào)表達(dá)式[[:alpha:]]。
使用program-text作為源代碼,可與-f命令混用。
打印bug報(bào)告信息的版本。
pattern {action} 如$ awk '/root/' test,或$ awk '$3 < 100' test。
兩者是可選的,如果沒(méi)有模式,則action應(yīng)用到全部記錄,如果沒(méi)有action,則輸出匹配全部記錄。默認(rèn)情況下,每一個(gè)輸入行都是一條記錄,但用戶可通過(guò)RS變量指定不同的分隔符進(jìn)行分隔。
模式可以是以下任意一個(gè):
/正則表達(dá)式/:使用通配符的擴(kuò)展集。
關(guān)系表達(dá)式:可以用下面運(yùn)算符表中的關(guān)系運(yùn)算符進(jìn)行操作,可以是字符串或數(shù)字的比較,如$2>%1選擇第二個(gè)字段比第一個(gè)字段長(zhǎng)的行。
模式匹配表達(dá)式:用運(yùn)算符~(匹配)和~!(不匹配)。
模式,模式:指定一個(gè)行的范圍。該語(yǔ)法不能包括BEGIN和END模式。
BEGIN:讓用戶指定在第一條輸入記錄被處理之前所發(fā)生的動(dòng)作,通常可在這里設(shè)置全局變量。
END:讓用戶在最后一條輸入記錄被讀取之后發(fā)生的動(dòng)作。
操作由一人或多個(gè)命令、函數(shù)、表達(dá)式組成,之間由換行符或分號(hào)隔開,并位于大括號(hào)內(nèi)。主要有四部份:
變量或數(shù)組賦值
輸出命令
內(nèi)置函數(shù)
控制流命令
Table 1. awk的環(huán)境變量
變量 | 描述 |
---|---|
$n | 當(dāng)前記錄的第n個(gè)字段,字段間由FS分隔。 |
$0 | 完整的輸入記錄。 |
ARGC | 命令行參數(shù)的數(shù)目。 |
ARGIND | 命令行中當(dāng)前文件的位置(從0開始算)。 |
ARGV | 包含命令行參數(shù)的數(shù)組。 |
CONVFMT | 數(shù)字轉(zhuǎn)換格式(默認(rèn)值為%.6g) |
ENVIRON | 環(huán)境變量關(guān)聯(lián)數(shù)組。 |
ERRNO | 最后一個(gè)系統(tǒng)錯(cuò)誤的描述。 |
FIELDWIDTHS | 字段寬度列表(用空格鍵分隔)。 |
FILENAME | 當(dāng)前文件名。 |
FNR | 同NR,但相對(duì)于當(dāng)前文件。 |
FS | 字段分隔符(默認(rèn)是任何空格)。 |
IGNORECASE | 如果為真,則進(jìn)行忽略大小寫的匹配。 |
NF | 當(dāng)前記錄中的字段數(shù)。 |
NR | 當(dāng)前記錄數(shù)。 |
OFMT | 數(shù)字的輸出格式(默認(rèn)值是%.6g)。 |
OFS | 輸出字段分隔符(默認(rèn)值是一個(gè)空格)。 |
ORS | 輸出記錄分隔符(默認(rèn)值是一個(gè)換行符)。 |
RLENGTH | 由match函數(shù)所匹配的字符串的長(zhǎng)度。 |
RS | 記錄分隔符(默認(rèn)是一個(gè)換行符)。 |
RSTART | 由match函數(shù)所匹配的字符串的第一個(gè)位置。 |
SUBSEP | 數(shù)組下標(biāo)分隔符(默認(rèn)值是 主站蜘蛛池模板: va视频在线观看 | 久久久av影视 | 精品国产91一区二区三区 | 深夜福利视频绿巨人视频在线观看 | 日本一区免费看 | 成人免费网站在线观看视频 | 欧美不卡 | 美国av免费看 | 91系列在线观看 | 亚洲免费毛片基地 | xxxx hd video 69 | 毛片大全在线观看 | 欧美三级欧美成人高清www | 一级空姐毛片 | 激情亚洲一区二区 | 精品麻豆cm视频在线看 | 久久精品欧美视频 | 国产精品性夜天天视频 | 亚洲一区二区网址 | 永久免费毛片 | 国产国语毛片 | 天使萌一区二区三区免费观看 | 中文日韩欧美 | 欧洲色阁中文字幕 | 黑色丝袜美美女被躁视频 | 热久久成人 | 免费一级毛片在线播放视频 | 国内精品久久久久久久影视红豆 | av在线等| 久久久久久久久国产精品 | 草草视频在线 | 日韩视频在线不卡 | 欧洲黄色一级视频 | 国产精品久久久久久影视 | 最新黄色毛片 | 欧美日韩视频第一页 | 伊人亚洲精品 | 毛片成人网 | 亚洲精品a级 | 91一区二区三区久久久久国产乱 | 色吧久久| |