awk使用例項說明

2021-08-11 14:12:36 字數 3472 閱讀 8560

awk 用法:awk ' pattern ' 

變數名含義

argc 命令列變元個數

argv 命令列變元陣列

filename 當前輸入檔名

fnr 當前檔案中的記錄號

fs 輸入域分隔符,預設為乙個空格

rs 輸入記錄分隔符

nf 當前記錄裡域個數

nr 到目前為止記錄數

ofs 輸出域分隔符

ors 輸出記錄分隔符

1、awk '/101/'               file 顯示檔案file中包含101的匹配行。

awk '/101/,/105/'         file

awk '$1 == 5'             file

awk '$1 == "ct"'          file 注意必須帶雙引號

awk '$1 * $2 >100 '       file 

awk '$2 >5 && $2<=15'     file

2、awk '' file顯示檔案file的當前記錄號、域數和每一行的第乙個和最後乙個域。

awk '/101/ ' file 顯示檔案file的匹配行的第

一、二個域加10。

awk '/101/ '  file

awk '/101/ ' file 顯示檔案file的匹配行的第

一、二個域,但顯示時域中間沒有分隔符。

3、df | awk '$4>1000000 '         通過管道符獲得輸入,如:顯示第4個域滿足條件的行。

4、awk -f "|" ''   file 按照新的分隔符「|」進行操作。

awk  'begin

'       file通過設定輸入分隔符(fs="[: \t|]")修改輸入分隔符。

sep="|"

awk -f $sep ''  file 按照環境變數sep的值做為分隔符。

awk -f '[ :\t|]' '' file按照正規表示式的值做為分隔符,這裡代表空格、:、tab、|同時做為分隔符。

awk -f ''    '' file 按照正規表示式的值做為分隔符,這裡代表[、]

5、awk -f awkfile       file 通過檔案awkfile的內容依次進行控制。

cat awkfile

/101/ --遇到匹配行以後列印 ' hello! '.\047代表單引號。

--因為沒有模式控制,列印每一行的前兩個域。

6、awk '$1 ~ /101/ ' file 顯示檔案中第乙個域匹配101的行(記錄)。

7、awk   'begin

'           file 通過設定輸出分隔符(ofs="%")修改輸出格式。

8、awk   'begin             begin表示在處理任意行之前進行的操作。

' file取得檔案第乙個域的最大值。

(表示式1?表示式2:表示式3相當於:

if (表示式1)

表示式2

else

表示式3

awk '' file 

9、awk '$1 * $2 >100 ' file 顯示檔案中第乙個域匹配101的行(記錄)。

10、awk '' file找到匹配行後先將第3個域替換後再顯示該行(記錄)。

awk ''  file 將第7域被3除,並將餘數賦給第7域再列印。

11、awk '/tom/ ' file找到匹配行後為變數wage賦值並列印該變數。

12、awk '/tom/  

end ' file end表示在所有輸入行處理完後進行處理。

13、awk 'gsub(/\$/,"");gsub(/,/,""); cost+=$4;

end '    file gsub函式用空串替換$和,再將結果輸出到filename中。

1 2 3 $1,200.00

1 2 3 $2,300.00

1 2 3 $4,000.00

awk '

end "' file

通過if和else if完成條件語句

awk '

end "' file

通過exit在某條件時退出,但是仍執行end操作。

awk '

end "' file

通過next在某條件時跳過該行,對下一行執行操作。

14、awk '' file1 file2 file3>fileall把file1、file2、file3的檔案內容全部寫到fileall中,格式為

列印檔案並前置檔名。

15、awk ' $1!=previous    

' fileall把合併後的檔案重新分拆為3個檔案。並與原檔案一致。

16、awk 'begin '        通過管道把date的執行結果送給getline,並賦給變數d,然後列印。

17、awk 'begin '

通過getline命令互動輸入name,並顯示出來。

awk 'begin }'

列印/etc/passwd檔案中使用者名稱包含050x_的使用者名稱。

18、awk '}' file通過while語句實現迴圈。

awk '}'   file通過for語句實現迴圈。

type file|awk -f "/" '

else }}'              顯示乙個檔案的全路徑。

用for和if顯示日期

awk  'begin }}

}'19、在awk中呼叫系統變數必須用單引號,如果是雙引號,則表示字串

flag=abcd

awk ''   結果為abcd

awk ''   結果為$flag

以上**chinaunix,以下是自己的總結:

求和:$awk 'beginend' a.txt   -----對a.txt檔案的第四個域進行求和!

$ awk '/^(no|so)/' test-----列印所有以模式no或so開頭的行。

$ awk '/^[ns]/' test-----如果記錄以n或s開頭,就列印這個記錄。

$ awk '$1 ~/[0-9][0-9]$/(print $1}' test-----如果第乙個域以兩個數字結束就列印這個記錄。

$ awk '$1 == 100 || $2 < 50' test-----如果第乙個或等於100或者第二個域小於50,則列印該行。

$ awk '$1 != 10' test-----如果第乙個域不等於10就列印該行。

$ awk '/test/' test-----如果記錄包含正規表示式test,則第乙個域加10並列印出來。

$ awk '' test-----如果第乙個域大於5則列印問號後面的表示式值,否則列印冒號後面的表示式值。

$ awk '/^root/,/^mysql/' test----列印以正規表示式root開頭的記錄到以正規表示式mysql開頭的記錄範圍內的所有記錄。如果找到乙個新的正規表示式root開頭的記錄,則繼續列印直到下乙個以正規表示式mysql開頭的記錄為止,或到檔案末尾。

AWK使用例項

在awk中,可以用!a 0 做為 條件,對 重複出現 的行進行 處理。b ash 3.2 cat 2 abc abc ef 123 dgag 123 bash 3.2aw k a 0 2 abc ef 123 dgag 對於awk a 3 需要了解3個知識點 1 awk陣列知識,不說了 2 awk的...

awk使用例項一則

meta db n e use web boss rainbow select idsid,sdbname,shost,sport,snameservicekey,sdriver from t boss v2 page datasource sed i s t g i 1while read lin...

epoll使用例項說明

之前一直在講如何epoll如何好用,但是並沒有例項來演示epoll的使用,下面我們就看乙個伺服器端使用epoll監聽大量併發鏈結的例子。首先看一下epoll的幾個函式的介紹。1 epoll create函式 intepoll create intsize 2 epoll ctl函式 brief 該函...