版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
shell文本處理shell文本處理任務(wù)01學(xué)習(xí)和使用grep任務(wù)02學(xué)習(xí)和使用sed任務(wù)03學(xué)習(xí)和使用cut任務(wù)04學(xué)習(xí)和使用awk2學(xué)習(xí)目標(biāo)掌握grep、sed、cut、awk命令的用法34.學(xué)習(xí)和使用awkawk用于在Linux/Unix下處理文本和數(shù)據(jù)。數(shù)據(jù)可以來自標(biāo)準(zhǔn)輸入、一個(gè)或多個(gè)文件,或其它命令的輸出。它支持用戶自定義函數(shù)和動態(tài)正則表達(dá)式等,是Linux/Uinx下的一個(gè)強(qiáng)大文本分析、編程工具,相對于grep的查找、sed的編輯、awk尤為擅長數(shù)據(jù)分析及生成報(bào)告。awk一般在命令行中使用,但更多是作為腳本來使用。awk有很多內(nèi)建的功能,如數(shù)組、函數(shù)等。學(xué)習(xí)和使用awk5awk簡介awk被稱為文本處理三劍客之一,三個(gè)字母分別代表其創(chuàng)建者姓氏的第一個(gè)字母。因?yàn)樗膭?chuàng)建者是三個(gè)人,分別是AlfredAho、PeterWeinberger、BrianKernighan。awk擁有自己的語言——awk程序設(shè)計(jì)語言,三位創(chuàng)建者已將它正式定義為“樣式掃描和處理語言”。awk是一種報(bào)表生成器,對文件內(nèi)容進(jìn)行各種“排版”操作。它允許您創(chuàng)建簡短的程序,這些程序的功能讀入輸入文件、數(shù)據(jù)排序、處理數(shù)據(jù)、對輸入執(zhí)行計(jì)算以及生成報(bào)表等。通過manawk可以獲取相關(guān)功能說明。awk是一種過程式編程語言或腳本語言解釋器,支持條件判斷、數(shù)組、循環(huán)等功能。6awk工作流程awk的處理文本和數(shù)據(jù)的流程方式如下:它逐行掃描文件,從第一行到最后一行,尋找匹配的特定模式的行,并在這些行上進(jìn)行你想要的操作。如果沒有指定處理動作,則把匹配的行顯示到標(biāo)準(zhǔn)輸出(屏幕);如果沒有指定模式,則所有被操作所指定的行都被處理。awk有兩個(gè)特殊的模式:BEGIN和END,它們分別放置在沒有讀取任何數(shù)據(jù)之前及在所有的數(shù)據(jù)讀取完成以后執(zhí)行。awk工作的整體流程如圖所示。從圖可以看出,在讀取文件內(nèi)容前,BEGIN后面的指令將被執(zhí)行,然后讀取文件內(nèi)容并判斷是否與特定的模式匹配,如果匹配,則執(zhí)行正常模式后面的指令;最后執(zhí)行END模式命令,并輸出文檔處理后的結(jié)果。7awk工作流程8awk格式為:BEGIN語句塊在awk開始從輸入流中讀取之前被執(zhí)行,這是一個(gè)可選的語句塊,如變量初始化、打印輸出表格的表頭等情況。END語句塊在awk在處理完所有的文本之后被執(zhí)行(如打印所有行后)被執(zhí)行,之后打印出分析結(jié)果這類操作,都可以在END語句塊中完成。它也是一個(gè)可選語句塊。pattern語句塊中的通用命令是最重要的部分,它也是可選的。如果沒有提供pattern語句塊,則默認(rèn)執(zhí)行{print},即打印每一個(gè)讀取到的行,awk讀取的每一行都會執(zhí)行該語句塊。awk工作流程9awk工作原理其步驟如下所示:第一步:執(zhí)行BEGIN{commands}語句塊中的語句;第二步:從文件或標(biāo)準(zhǔn)輸入(stdin)讀取一行,然后執(zhí)行pattern{commands}語句塊,它逐行掃描文件,從第一行至最后一行;第三步:當(dāng)讀至輸入流末尾時(shí),執(zhí)行END{commands}語句塊。10awk的基本語法格式如下:或:或:awk工作原理awk基本語法格式11awk基本語法格式awk命令選項(xiàng)如表所示。awk工作原理12awk語法選項(xiàng)在工作場景中使用頗多。使用方法也有很多,下面通過幾個(gè)簡單的案例來展示一下awk的常用方法。文件/etc/passwd中匹配root的行。awk工作原理awk語法選項(xiàng)實(shí)例13文件/etc/passwd打印滿足條件行的第一個(gè)字段和第三個(gè)字段。awk工作原理awk語法選項(xiàng)實(shí)例14awk打印出“hello,awk”字符串。對文件/etc/passwd逐行處理。awk工作原理awk語法選項(xiàng)實(shí)例15當(dāng)在指定/etc/passwd作為輸出文件時(shí),awk就會依次讀/etc/passwd中的每一行執(zhí)行print命令。awk用法如圖所示。awk工作原理awk語法選項(xiàng)實(shí)例16awk讀入有“\n”換行符分割的一條記錄,然后將記錄按指定的分隔符劃分域,$0則表示所有域,$1表示第一個(gè)域,$n表示第n個(gè)域。默認(rèn)分隔符是“空格鍵”或“tab”鍵。因此$1表示登錄用戶,$3表示登錄用戶id,以此類推。其步驟解釋為:(1)awk使用一行作為輸入,并將這一行賦給變量$0,每一行也可稱為一個(gè)記錄,以換行符結(jié)束。(2)然后,行被“:”(默認(rèn)為空格或制表符)分解成字段(或域),每個(gè)字段放在已編號的變量中,從$1開始,最多達(dá)100個(gè)字段。(3)其中,awk使用空格來分隔字段,變量FS來確定字段分隔符。初始時(shí),F(xiàn)S默認(rèn)為空格。awk工作原理awk語法選項(xiàng)實(shí)例17(4)awk打印字段時(shí),將使用print打印,并以空格隔開,注意$1和$3之間有一個(gè)逗號,稱為輸出字段分隔符OFS,OFS默認(rèn)為空格。awk輸出之后,將從文件中獲取另一行,并將其放在$0中,覆蓋原來的內(nèi)容;再將新的字符串分隔成字段并進(jìn)行處理,該一過程將持續(xù)到所有行處理完畢,具體如下所示。打印/etc/passwd下所有的用戶名。awk工作原理awk語法選項(xiàng)實(shí)例18awk語法選項(xiàng)實(shí)例打印/etc/passwd下所有的用戶名及UID。awk工作原理19awk語法選項(xiàng)實(shí)例以username:xxxuid:xxx格式輸出。awk工作原理20awk語法選項(xiàng)實(shí)例取出大于35%的磁盤利用率。通常情況下,對于每個(gè)代碼輸入,awk都會執(zhí)行一次。然而,在某些編寫代碼的情況下,可能需要在awk開始處理輸入文件中的文本之前執(zhí)行初始化代碼。這種情況下,awk允許用戶定義一個(gè)BEGIN模塊。awk工作原理21awk語法選項(xiàng)實(shí)例因?yàn)閍wk在開始處理輸入文件之前會執(zhí)行BEGIN模塊,因此,它是初始化FS(字段分隔符)變量、初始化在程序中以后會引用的全局變量。awk還提供了另一個(gè)特殊模塊,叫作END模塊。awk在處理輸入文件中的所有行之后執(zhí)行這個(gè)模塊。通常,END模塊用于執(zhí)行最終計(jì)算或打印結(jié)尾的摘要信息。統(tǒng)計(jì)/etc/passwd的賬戶人數(shù)腳本。awk工作原理22awk優(yōu)于grep和sed的主要原因是支持對記錄和字段的處理,通常情況下,awk將文本文件中的一行當(dāng)作一個(gè)記錄,而將一行中某些記錄中當(dāng)作一個(gè)字段。為了操作這些不同的字段,用$1,$2,$3…這樣的方式按照一定的順序表示行(記錄)中的不同字段。特殊地,awk用$0表示整個(gè)行(記錄)。系統(tǒng)默認(rèn)是用空格作為不同的字段之間的分隔符,awk在命令行中使用-F的形式來改變這個(gè)分隔符。事實(shí)上,awk是使用一個(gè)內(nèi)置的變量RS來記錄這個(gè)分隔符。awk中有很多這樣的內(nèi)置變量。如記錄分隔符變量RS、當(dāng)前工作的記錄數(shù)NR等。awk提供了所有的內(nèi)置變量。了解這些內(nèi)置變量是很重要的。awk內(nèi)置變量。這些內(nèi)置的變量在使用awk工具時(shí)可以被修改或者引用,比如說,可以使用NR這個(gè)內(nèi)置變量改變模式匹配中指定工作范圍,也可以通過修改記錄的分隔符RS讓一個(gè)特殊字符作為記錄的分隔符,而不是換行符。awk內(nèi)置變量23例如,顯示/etc/passwd文本文件中第七行到第十五行中以字符“:”分隔的第一字段,第三字段和第七字段,代碼表示如下。FIELDWIDTHS以空格分隔的字段寬度,如果指定此變量,awk將會用指定的寬度替換變量FS指定的分隔符,具體舉例如下所示。內(nèi)置變量用法舉例如下。awk內(nèi)置變量24FS作為指定分隔符,同-F選項(xiàng),具體如下所示。awk內(nèi)置變量25FS作為輸入分隔符,OFS作為輸出分隔符,具體如下所示。awk內(nèi)置變量26$0指的是整行記錄,具體如下所示。awk內(nèi)置變量27NR指當(dāng)前文件的總行號遞增,具體如下所示。awk內(nèi)置變量28FNR指當(dāng)前文件的行數(shù)不遞增,具體如下所示。awk內(nèi)置變量29NF指瀏覽記錄的字段個(gè)數(shù),以冒號作為分隔符,記錄字段的個(gè)數(shù)。具體如下所示。awk內(nèi)置變量30$NF指最后一個(gè)字段的值,具體如下所示。awk內(nèi)置變量31RS記錄分隔符(默認(rèn)是一個(gè)換行符),以空格作為分隔符,具體如下所示。awk內(nèi)置變量32ORS輸出數(shù)據(jù)時(shí),默認(rèn)輸出一條記錄的分隔符,以空格作為分隔符,將文件每一行合并為一行,具體如下所示。awk內(nèi)置變量33awk允許使用多種運(yùn)算,如+、-、*、/、%等等,同時(shí),awk也有++、--、+=、-=、=+、=-類似的運(yùn)算功能,這些運(yùn)算功能使得編寫awk程序更加便捷。另外,awk還提供了部分內(nèi)置的運(yùn)算函數(shù)(如log、spr、cos、sin等)以及一些用于對字符串進(jìn)行運(yùn)算操作的函數(shù)(如length、substr等)。這些函數(shù)的引用增強(qiáng)了awk的運(yùn)算功能。awk支持多種關(guān)系判斷,如常用的==(等于)、!=(不等于)、>(大于)、>=(大于等于)、<=(小于等于);,同時(shí),awk用作樣式匹配時(shí),還提供了~(匹配于)和!~(不匹配于)判斷,awk也允許使用!(非)、&&(與)、||(或)和括號()等邏輯運(yùn)算符進(jìn)行多重判斷,這增強(qiáng)了awk的功能。awk正則匹配元字符。awk模式34下面用幾個(gè)例子來進(jìn)一步描述awk模式詳解的用法。文件b.txt內(nèi)容如下所示。以空格作為分隔符,打印出字段數(shù),具體如下所示。以冒號作為分隔符,打印出字段數(shù),具體如下所示。awk模式35以空格或冒號作為分隔符,打印出字段數(shù),具體如下所示。以空格或冒號以上作為分隔符,打印
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼師配班工作總結(jié)
- 來料檢驗(yàn)員工作總結(jié)
- 收款委托書(3篇)
- 福建省莆田市2024?2025學(xué)年高二上學(xué)期第一次月考數(shù)學(xué)試卷含答案
- 讀書活動閱讀心得體會
- 吉林省長春市(2024年-2025年小學(xué)五年級語文)人教版開學(xué)考試((上下)學(xué)期)試卷及答案
- 福建省泉州市(2024年-2025年小學(xué)五年級語文)人教版課后作業(yè)(下學(xué)期)試卷及答案
- 茶文化與茶藝鑒賞 教案全套 楊環(huán)煥 項(xiàng)目1-6 尋茶源 中國茶文化- 品茶韻 常見茶葉的沖泡與鑒賞
- 護(hù)理工作年終總結(jié)匯報(bào)
- 上海市縣(2024年-2025年小學(xué)五年級語文)統(tǒng)編版質(zhì)量測試((上下)學(xué)期)試卷及答案
- 防炫(AG工藝)玻璃項(xiàng)目可行性研究報(bào)告模板-備案拿地
- 煤炭洗選工藝數(shù)字化與智能化
- 2024年【汽車駕駛員(技師)】證模擬考試及答案
- 臨床醫(yī)學(xué):腫瘤標(biāo)志物
- 瑜伽脊柱扭轉(zhuǎn)課程設(shè)計(jì)
- 風(fēng)電項(xiàng)目風(fēng)機(jī)吊裝專項(xiàng)施工方案
- 2024版供應(yīng)鏈代理采購合同協(xié)議書范本
- 室外燃?xì)夤艿腊惭b施工方案
- 小學(xué)生個(gè)人行為習(xí)慣自我管理、監(jiān)督考核評分表
- 新生兒醫(yī)??ㄎ袝?/a>
- 醫(yī)院醫(yī)療科研設(shè)備租賃協(xié)議
評論
0/150
提交評論