awk基本文法幾則

來源:互聯網
上載者:User

1、迴圈語句:

awk中的迴圈語句同樣借鑒於C語言,支援while、do/while、for、break、continue,這些關鍵字的語義和C語言中的語義完全相同。

2、流程式控制制語句:

next語句是從檔案中讀取下一行,然後從頭開始執行awk指令碼。

exit語句用於結束awk程式。它終止對記錄的處理。但是不會略過END模組,如果exit()語句被賦值0--255之間的參數,如exit(1),這個參數就被列印到命令列,以判斷退出成功還是失敗。

3、重新導向

/> awk '$4 >= 70 {print $1,$2 > "passing_file"}' filename  #注意這裡的檔案名稱需要用雙引號括起來。

4、輸入重新導向

awk中對於輸入重新導向是通過getline函數來完成的。getline函數的作用是從標準輸入、管道或者當前正在處理的檔案之外的其他輸入檔案獲得 輸入。他負責從輸入獲得下一行的內容,並給NF、NR和FNR等內建變數賦值。如果得到一個記錄,getline就返回1,如果達到檔案末尾就返回0。如 果出現錯誤,如開啟檔案失敗,就返回-1。

/> awk 'BEGIN { "date" | getline d; print d}'

Tue Nov 15 15:31:42 CST 2011

上例中的BEGIN動作模組中,先執行shell命令date,並通過管道輸出給getline,然後再把輸出賦值給自訂變數d並列印輸出它。

/> awk 'BEGIN { "date" | getline d; split(d,mon); print mon[2]}'

Nov

上例中date命令通過管道輸出給getline並賦值給d變數,再通過內建函數split將d拆分為mon數組,最後print出mon數組的第二個元素。

5、關閉管道

由於awk中同時開啟的管道只有一個,那麼在開啟下一個管道之前必須關閉它,管道符號右邊可以通過可以通過雙引號關閉管道。如果不關閉,它將始終保持開啟狀態,直到awk退出。

/> awk {print $1,$2,$3 | "sort -4 +1 -2 +0 -1"} END {close("sort -4 +1 -2 +0 -1") } filename

上例中END模組中的close顯示關閉了sort的管道,需要注意的是close中關閉的命令必須和當初開啟時的完全符合,否則END模組產生的輸出會和以前的輸出一起被sort分類。

6、初始設定變數

awk在動作部分還提供了BEGIN塊和END塊。其中BEGIN動作塊在awk處理任何輸入檔案行之前執行。事實上,BEGIN塊可以在沒有任何輸入 檔案的條件下測試。因為在BEGIN塊執行完畢以前awk將不讀取任何輸入檔案。BEGIN塊通常被用來改變內建變數的值,如OFS、RS或FS等。也可 以用於初始化自訂變數值,或列印輸出標題。

#從輸入檔案中找到以north開頭的記錄count就加一,最後在END塊中輸出該變數。

/> awk '/^north/{count++}; END{print count}' testfile

原文:

本篇文章寫的非常好,更多參考

http://www.cnblogs.com/mchina/archive/2012/06/30/2571317.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.