awk命令常用例項

2021-06-02 14:38:51 字數 3172 閱讀 8596

1、簡單

awk '/101/' file 

顯示檔案file中包含101的匹配行。

awk '/101/,/105/' file 

顯示檔案file中包含101或105的行。

awk '$1 == 5' file

顯示檔案file中第1個字段為5的行。

awk '$1 == "ct

"' file 

顯示檔案file中第1個字段為ct的行

awk '$1 * $2 >100 ' file

顯示檔案file中第1個字段和第二個欄位的乘積大於100的行

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

顯示檔案file中第二個字段大於5但小於等於15的行

2、字段域

awk '' file

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

awk '/101/ ' file 

把檔案file的中包含101的匹配行的第乙個字段進行顯示,並把第二個字段域加10也顯示,它們之間用逗號進行分割。

awk '/101/ ' file

把檔案file的中包含101的匹配行的第乙個字段進行顯示,並把第二個字段域加10也顯示,但它們之間沒有任何分割符。

3、管道輸入

df |awk '$4>1000000 ' 

通過管道符獲得輸入,顯示第4個字段域大於1000000的行。

4、字段域分割符

awk 

-f"|" '' file 

按照新的分隔符「|」進行操作。

awk 'begin

' file 

通過設定分隔符變數fs="

[: \t|

]"使得

冒號、制**及

|都將作為分割符。

sep="|"

awk 

-f$sep '' file 

按照環境變數sep的值做為分隔符。

awk 

-f'[:\t

|]' '' file

按照正規表示式的值做為分隔符,這裡代表空格、:、tab、|同時做為分隔符。

5、載入awk指令碼命令檔案

awk -f awkfile file

載入檔案awkfile的awk指令碼命令來進行操作。

cat awkfile

/101/ 

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

6、行首匹配

awk '$1~

/101/

' file 

顯示檔案中第乙個域匹配101的行(記錄)。

7、輸出分割符

awk 'begin ' file 

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

8、條件表示式

awk 'begin  

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

' file 

取得檔案第乙個域的最大值。這裡居然是進行字元asc碼的比較。

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

if (表示式1)

表示式2

else

表示式3

在awk的action中也可以使用條件表示式

awk '' file

9、數學操作

awk '$1 * $2 >100 ' file 

顯示檔案file中第1個字段和第二個欄位的乘積大於100的行

10、改變字段域

awk '$1 == 「chi」 ' 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中。

14、條件語句

awk '

end ' file

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

awk '

end' file

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

awk '

end ' file

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

15、對多個檔案操作

awk '' 

file1 file2 file3

>fileall 

把file1、file2、file3的檔案內容全部寫到fileall中,並在每行以其該行源檔名作為開始

awk ' $1!=previous

' fileall 

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

17、getline

awk 'begin ' 

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

awk 'begin '

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

awk 'begin }'

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

注:實驗失敗

18、呼叫系統變數

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

flag=abcd

awk '' 

結果為abcd。

注:實驗失敗

awk '' 

結果為$flag

19、迴圈

awk'}' file 

通過while語句實現迴圈。

awk'}' file 

通過for語句實現迴圈。

type file|

awk-f "/" '

else }}' 

顯示file這個命令的全路徑。

awk '

begin  }}}'

用for和if顯示日期

awk命令常用例項

本文編輯整理自 1 簡單 awk 101 file 顯示檔案file中包含101的匹配行。awk 101 105 file 顯示檔案file中包含101或105的行。awk 1 5 file 顯示檔案file中第1個字段為5的行。awk 1 ct file 顯示檔案file中第1個字段為ct的行 a...

awk命令常用例項

1 簡單 awk 101 file 顯示檔案file中包含101的匹配行。awk 101 105 file 顯示檔案file中包含101或105的行。awk 1 5 file 顯示檔案file中第1個字段為5的行。awk 1 ct file 顯示檔案file中第1個字段為ct的行 awk 1 2 1...

常用awk命令

awk 用法 awk pattern 變數名 含義 argc 命令列變元個數 argv 命令列變元陣列 filename 當前輸入檔名 fnr 當前檔案中的記錄號 fs 輸入域分隔符,預設為乙個空格 rs 輸入記錄分隔符 nf 當前記錄裡域個數 nr 到目前為止記錄數 ofs 輸出域分隔符 ors ...