版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Linux:awk命令詳解簡單使用:awk :對于文件中一行行的獨處來執(zhí)行操作 。awk -F :'print $1,$4' 使用:來分割這一行,把這一行的第一第四個域打印出來 。AWK命令介紹awk語言的最基本功能是在文件或字符串中基于指定規(guī)則瀏覽和抽取信息,awk抽取信息后,才能進(jìn)行其他文本操作,完整的awk腳本通常用來格式化文本文件中的信息 1. 調(diào)用awk第一種命令行方式,如1awk -Field-separator 'commands' input-file(s)這里commands是真正的awk命令,-F域分隔符是可
2、選的,awk默認(rèn)使用空格分隔,因此如果要瀏覽域間有空格的文本,不必指定這個選項,但如果瀏覽如passwd文件,此文件各域使用冒號作為分隔符,則必須使用-F選項 awk -F 'commands' input-file第二種,將所有awk命令插入一個文件,并使awk程序可執(zhí)行,然后用awk命令解釋器作為腳本的首行,以便通過鍵入腳本名稱來調(diào)用它第三種,將所有awk命令插入一個單獨文件,然后調(diào)用,如1awk -f awk-script-file input-file-f選項指明在文件awk-script-file的awk腳本,input-file是使用awk進(jìn)
3、行瀏覽的文件名2. awk腳本awk腳本由各種操作和模式組成,根據(jù)分隔符(-F選項),默認(rèn)為空格,讀取的內(nèi)容依次放置到對應(yīng)的域中,一行一行記錄讀取,直到文件尾2.1. 模式和動作任何awk語句都是由模式和動作組成,在一個awk腳本中可能有許多語句。模式部分決定動作語句何時觸發(fā)及觸發(fā)事件。動作即對數(shù)據(jù)進(jìn)行的操作,如果省去模式部分,動作將時刻保持執(zhí)行狀態(tài)模式可以是任何條件語句或復(fù)合語句或正則表達(dá)式,模式包含兩個特殊字段BEGIN和END,使用BEGIN語句設(shè)置計數(shù)和打印頭,BEGIN語句使用在任何文本瀏覽動作之前,之后文本瀏覽動作依據(jù)輸入文件開始執(zhí)行;END語句用來在awk完成文本瀏覽
4、動作后打印輸出文本總數(shù)和結(jié)尾狀態(tài)標(biāo)志,有動作必須使用括起來實際動作在大括號內(nèi)指明,常用來做打印動作,但是還有更長的代碼如if和循環(huán)looping語句及循環(huán)退出等,如果不指明采取什么動作,awk默認(rèn)打印出所有瀏覽出的記錄2.2. 域和記錄awk執(zhí)行時,其瀏覽標(biāo)記為$1,$2.$n,這種方法稱為域標(biāo)記。使用$1,$3表示參照第1和第3域,注意這里使用逗號分隔域,使用$0表示使用所有域。例如1awk 'print $0' temp.txt sav.txt表示打印所有域并把結(jié)果重定向到sav.txt中1awk 'print $0' temp.txttee sav.txt
5、和上例相似,不同的是將在屏幕上顯示出來1awk 'print $1,$4' temp.txt只打印出第1和第4域1awk 'BEGIN print NAME GRADEn- print $1t$4' temp.txt表示打信息頭,即輸入的內(nèi)容的第一行前加上NAME GRADEn-,同時內(nèi)容以tab分開1awk 'BEGIN print being print $1 END print end' temp同時打印信息頭和信息尾2.3. 條件操作符、=、=、!=、=、匹配正則表達(dá)式、!不匹配正則表達(dá)式匹配awk
6、39;if ($4ASIMA) print $0' temp 表示如果第四個域包含ASIMA,就打印整條精確匹配awk '$3=48 print $0' temp 只打印第3域等于48的記錄不匹配 awk '$0 ! ASIMA' temp 打印整條不包含ASIMA的記錄不等于 awk '$1 != asima' temp小于 awk 'if ($
7、1$2) print $1 is smaller' temp設(shè)置大小寫 awk 'Ggreen' temp 打印整條包含Green,或者green的記錄任意字符 awk '$1 .a' temp 打印第1域中第四個字符是a的記錄,符號代表行首,符合.代表任意字符或關(guān)系匹配 awk '$0(abc)(efg)' temp 使用時,語句需要括起來AND與關(guān)系 awk 'if
8、( $1=a && $2=b ) print $0' tempOR或關(guān)系 awk 'if ($1=a $1=b) print $0' temp2.4. awk內(nèi)置變量ARGC命令行參數(shù)個數(shù)NF 瀏覽記錄的域個數(shù)AGRV命令行參數(shù)排列NR已讀的記錄數(shù)ENVIRON支持隊列中系統(tǒng)環(huán)境變量的使用 OFS輸出域分隔符 FILENAMEawk瀏覽的文件名 ORS輸出記錄分隔符FNR瀏覽文件的記錄數(shù)RS控制記錄分隔符FS設(shè)置輸入域分隔符,同- F選項NF 瀏覽記錄的域個數(shù) 1234
9、5例 awk 'END print NR' temp 在最后打印已讀記錄條數(shù) awk 'print NF,NR,$0 END print FILENAME' temp awk 'if (NR0 && $4Brown) print $0' temp 至少存
10、在一條記錄且包含Brown NF的另一用法 echo $PWD awk -F 'print $NF' 顯示當(dāng)前目錄名 2.5. awk操作符在awk中使用操作符,基本表達(dá)式可以劃分成數(shù)字型、字符串型、變量型、域及數(shù)組元素設(shè)置輸入域到變量名1awk 'name=$1;six=$3; if (six=man) print name is six' temp域值比較操作1awk 'BEGIN BASE=27 if ($4BASE) pr
11、int $0' temp修改數(shù)值域取值(原輸入文件不會被改變)1awk 'if ($1=asima) $6=$6-1;print $1,$6,$7' temp修改文本域1awk 'if ($1=asima) ($1=desc);print $1' temp只顯示修改記錄(只顯示所需要的,區(qū)別上一條命令,注意)1awk 'if ($1=asima) $1=desc;print$1' temp創(chuàng)建新的輸出域1awk '$4=$3-$2; print $4' temp統(tǒng)計列值12awk '(tot+=$3);END pr
12、int tot' temp 會顯示每列的內(nèi)容 awk '(tot+=$3);END print tot' temp 只顯示最后的結(jié)果文件長度相加1ls -lawk 'd print $9t$5 tot+=$5 ENDprint totKB tot'只列出文件名1ls -lawk 'print $9'
13、60; 常規(guī)情況文件名是第9域2.6. awk內(nèi)置字符串函數(shù)1234567891011121314151617181920212223242526272829gsub(r,s) 在整個$0中用s替代r awk 'gsub(name,xingming) print $0' temp gsub
14、(r,s,t) 在整個t中用s替代r index(s,t) 返回s中字符串t的第一位置 awk 'BEGIN print index(Sunny,ny)' temp 返回4
15、0; length(s) 返回s的長度 match(s,r) 測試s是否包含匹配r的字符串 awk '$1=J.Lulu print match($1,u
16、)' temp 返回4 split(s,a,fs) 在fs上將s分成序列a awk 'BEGIN print split(12#345#6789,myarray,#)' 返回3,同時myarray1=12, myarray2=345, myarray3=6789 sprint(fmt,exp)
17、 返回經(jīng)fmt格式化后的exp sub(r,s) 從$0中最左邊最長的子串中用s代替r(只更換第一遇到的匹配字符串) substr(s,p) 返回字符串s中從p開始的后綴部分 substr(s,p,n)
18、; 返回字符串s中從p開始長度為n的后綴部分2.7. printf函數(shù)的使用12345字符轉(zhuǎn)換 echo 65 awk 'printf %cn,$0' 輸出A awk 'BEGIN printf %fn,999' 輸出999.000000 格式化輸出awk 'printf %-15s %sn
19、,$1,$3' temp 將第一個域全部左對齊顯示2.8. 其他awk用法向一行awk命令傳值12awk 'if ($5AGE) print $0' AGE=10 temp who awk 'if ($1=user) print $1 are in $2 ' user=$LOGNAME 使用環(huán)境變量awk腳本命令12345678910111213141516171819202122!binawk -f # all comment lines must start with a hash '#'
20、 # name student_tot.awk # to call student_tot.awk grade.txt # prints total and average of club student points # print a header first BEGIN print Student Date Member No.
21、; Grade Age Points Max print Name Joined Gained Point Available print= # let's add the scores of points gained (tot+=$6);
22、160;# finished processing now let's print the total and average point END print Club student total points tot print Average Club Student points totN 2.9. awk數(shù)組awk的循環(huán)基本結(jié)構(gòu)1234567For (element in
23、array) print arrayelement awk 'BEGIN record=123#456#789;split(record,myarray,#) END for (i in myarray) print myarrayi 3.0
24、 awk中自定義語句3.1. 條件判斷語句(if)12345if(表達(dá)式) # if ( Variable in Array ) 語句1 else 語句2格式中語句1可以是多個語句,如果你為了方便Unix awk判斷也方便你自已閱讀,你最好將多個語句用括起來。Unix awk分枝結(jié)構(gòu)允許嵌套,其格式為:123456if(表達(dá)式) 語句1 els
25、e if(表達(dá)式) 語句2 else 語句3 12345678910111213141516awk 'BEGIN test=100; if(test90) print very good; else if(test60)
26、; print good; else print no pass; ' very good每條命令語句后面可以用“;”號結(jié)尾。3.2. 循環(huán)語句(while,for,do)1.while語句格式:while(表達(dá)式)語句例子:
27、1234567891011chengmolocalhost nginx# awk 'BEGIN test=100; total=0; while(i=test) total+=i; i+; print total; ' 50502.for 循環(huán)for循環(huán)有兩種格式:格式1:for(變量 in 數(shù)組)語句 例子:1234567891011121314
28、15chengmolocalhost nginx# awk 'BEGIN for(k in ENVIRON) print k=ENVIRONk; ' AWKPATH=.usrshareawk OLDPWD=homeweb97 SSH_ASKPASS=usrlibexecopensshgnome-ssh-askpass SELINUX_LEVEL_REQUESTED= SELINUX_ROLE_REQ
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度專業(yè)職業(yè)測評與居間合同3篇
- 二零二五年度P2P出借平臺投資者教育與服務(wù)合同3篇
- 二零二五年度企業(yè)破產(chǎn)財產(chǎn)清算協(xié)議2篇
- 個性化條款:20249A文離婚合同案例分析版
- 二零二五版房屋征收拆遷補償協(xié)議書3篇
- 二零二五年度建筑工程招投標(biāo)與合同質(zhì)量保證金管理協(xié)議書3篇
- 物業(yè)管理處與2025年度收費員服務(wù)協(xié)議3篇
- 2025年度門衛(wèi)人員崗位職責(zé)優(yōu)化聘用協(xié)議3篇
- 2025年度內(nèi)蒙古自治區(qū)農(nóng)業(yè)廢棄物資源化利用承包合同3篇
- 二零二五年度城鄉(xiāng)汽車租賃及售后服務(wù)合同4篇
- 2025年長沙穗城軌道交通有限公司招聘筆試參考題庫含答案解析
- 人教版物理八年級下冊 專項訓(xùn)練卷 (一)力、運動和力(含答案)
- 山東省房屋市政工程安全監(jiān)督機(jī)構(gòu)人員業(yè)務(wù)能力考試題庫-中(多選題)
- 《七律二首 送瘟神》教案- 2023-2024學(xué)年高教版(2023)中職語文職業(yè)模塊
- 2024年中考語文滿分作文6篇(含題目)
- 北師大版 2024-2025學(xué)年四年級數(shù)學(xué)上冊典型例題系列第三單元:行程問題“拓展型”專項練習(xí)(原卷版+解析)
- 2023年譯林版英語五年級下冊Units-1-2單元測試卷-含答案
- 施工管理中的文檔管理方法與要求
- DL∕T 547-2020 電力系統(tǒng)光纖通信運行管理規(guī)程
- 種子輪投資協(xié)議
- 執(zhí)行依據(jù)主文范文(通用4篇)
評論
0/150
提交評論