為什么要使用Unix awk
你也許仍然會(huì)問(wèn),我為什么要使用Unix awk?使用Unix awk的第一個(gè)理由是基于文本的樣式掃描和處理是我們經(jīng)常做的工作,awk所做的工作有些象數(shù)據(jù)庫(kù),但與數(shù)據(jù)庫(kù)不同的是,它處理的是文本文件,這些文件沒(méi)有專門(mén)的存儲(chǔ)格式,普通的人們就能編輯、閱讀、理解和處理它們。
而數(shù)據(jù)庫(kù)文件往往具有特殊的存儲(chǔ)格式,這使得它們必須用數(shù)據(jù)庫(kù)處理程序來(lái)處理它們。
既然這種類(lèi)似于數(shù)據(jù)庫(kù)的處理工作我們經(jīng)常會(huì)遇到,我們就應(yīng)當(dāng)找到處理它們的簡(jiǎn)便易行的方法,Unix有很多這方面的工具,例如sed 、grep、sort以及find等等,Unix awk是其中十分優(yōu)秀的一種。
使用Unix awk的第二個(gè)理由是awk是一個(gè)簡(jiǎn)單的工具,當(dāng)然這是相對(duì)于其強(qiáng)大的功能來(lái)說(shuō)的。的確,Unix有許多優(yōu)秀的工具,例如Unix天然的開(kāi)發(fā)工具C語(yǔ)言及其延續(xù)C++就非常的優(yōu)秀。
但相對(duì)于它們來(lái)說(shuō),Unix awk完成同樣的功能要方便和簡(jiǎn)捷得多。這首先是因?yàn)閍wk提供了適應(yīng)多種需要的解決方案:從解決簡(jiǎn)單問(wèn)題的awk命令行到復(fù)雜而精巧的awk程序設(shè)計(jì)語(yǔ)言,這樣做的好處是,你可以不必用復(fù)雜的方法去解決本來(lái)很簡(jiǎn)單的問(wèn)題。
例如,你可以用一個(gè)命令行解決簡(jiǎn)單的問(wèn)題,而C不行,即使一個(gè)再簡(jiǎn)單的程序,C語(yǔ)言也必須經(jīng)過(guò)編寫(xiě)、編譯的全過(guò)程。其次,awk本身是解釋執(zhí)行的,這就使得Unix awk程序不必經(jīng)過(guò)編譯的過(guò)程,同時(shí),這也使得它與shell script程序能夠很好的契合。
最后,Unix awk本身較C語(yǔ)言簡(jiǎn)單,雖然awk吸收了C語(yǔ)言很多優(yōu)秀的成分,熟悉C語(yǔ)言會(huì)對(duì)學(xué)習(xí)awk有很大的幫助,但awk本身不須要會(huì)使用C語(yǔ)言――一種功能強(qiáng)大但需要大量時(shí)間學(xué)習(xí)才能掌握其技巧的開(kāi)發(fā)工具。
使用Unix awk的第三個(gè)理由是awk是一個(gè)容易獲得的工具。與C和C++語(yǔ)言不同,awk只有一個(gè)文件(/bin/awk),而且?guī)缀趺總€(gè)版本的Unix都提供各自版本的awk,你完全不必費(fèi)心去想如何獲得awk。
但C語(yǔ)言卻不是這樣,雖然C語(yǔ)言是Unix天然的開(kāi)發(fā)工具,但這個(gè)開(kāi)發(fā)工具卻是單獨(dú)發(fā)行的,換言之,你必須為你的Unix版本的C語(yǔ)言開(kāi)發(fā)工具單獨(dú)付費(fèi)(當(dāng)然使用D版者除外),獲得并安裝它,然后你才可以使用它。
基于以上理由,再加上Unix awk強(qiáng)大的功能,我們有理由說(shuō),如果你要處理與文本樣式掃描相關(guān)的工作,awk應(yīng)該是你的第一選擇。在這里有一個(gè)可遵循的一般原則:如果你用普通的shell工具或shell script有困難的話,試試Unix awk,如果awk仍不能解決問(wèn)題,則便用C語(yǔ)言,如果C語(yǔ)言仍然失敗,則移至C++。
【編輯推薦】