Linux Awk notes

來源:互聯網
上載者:User

Linux Awk notes 1. awk語言  www.2cto.com  awk是用來操作資料和產生報表的一種程式設計語言。awk從第一行到最後一行漸進式掃描一個檔案,搜尋與指定模式比對的行,並對這些行執行選定的操作(操作封裝在花括弧裡)。awk指令包括模式、操作或模式和操作的組合。awk模式控制awk對一行輸入作什麼樣的操作;包括Regex,可以產生布爾值的運算式,或兩者的結合。awk支援的Regex與egrep基本一致;也可以用 & >在替代串裡表示搜尋串裡匹配到的字串。awk操作是封裝在花括弧裡且由分號分隔的語句(語句如果在各自的行裡,也可用分行符號分隔)。awk支援print和printf格式化輸出,其中printf格式化字元與C語言中的格式化字元其本一致。print提供分行符號,printf不提供,換行時需要提供逸出序列\n。 2. awk內建變數 內建變數名稱大小,可以用在運算式裡面,且可以被重設。  www.2cto.com  變數名 變數含義ARGC 命令列變數個數ARGV 命令列變數數組FILENAME 當前輸入的檔案名稱NF 目前記錄的域個數NR 到目前為止所有輸入檔案的記錄數FNR 到此為止當前檔案的記錄數FS 輸入欄位分割符,預設為一個空格。也可以在命令列通過 -F 選項指定輸入欄位分割符OFS 輸出域分割符RS 輸入記錄分割符ORS 輸出記錄分割符OFMT 數值輸出格式;printf格式化輸出時也可指定數值輸出格式SUBSEP 下標分割符,可用於實現多維陣列RLENGTH 由match函數匹配的串長度RSTART 由match函數匹配的串位移量3. BEGIN,END模式  www.2cto.com   BEGIN模式後跟一個操作模組,在awk處理檔案之前執行該模組。BEGIN操作通常用來改變FS、RS、OFS等內建變數的值,或給使用者自訂變數賦初值,把標題列印成輸出的一部分等。eg: awk 'BEGIN{FS=":"; OFS="\t"}{print $1,$2}' filename END模式不與任何輸入行匹配,只執行與END模式相關的操作。在awk將所有輸入行處理完後,才會執行END模組。eg: awk 'END{print "The number of records is " NR}' filename 4. awk內建函數 getlinegetline函數用來從標準輸入、管道、或檔案讀輸入,而不是從正被處理的當前檔案。eg: awk 'BEGIN{"date" | getline dt; print dt}' filenamesystemsystem函數將一個shell命令當作它的變數,執行該命令,並把退出狀態返回給awk。sub和gsubsub函數把正則 運算式與記錄裡最大且最左邊的字串匹配,然後用替換串替換該字串。sub將目標字串(eg: $1)作為第三個參數,可選;如果沒指定目標串,預設使用整條記錄。gsub函數全域替換記錄裡Regex的每次匹配。 sub (regular expression, substitution string[, target string]) gsub (regulat expression, substitution string[, target string])indexindex函數返回在一個字串裡找到子串的第一個位置,位移量從1開始index (string, substring)lengthlength函數返回一個字串的字元數;如果沒有變數,就返回一條記錄裡的字元數。length [(string)]substrsubstr函數返回從第一個位置開始的字串的一個子串;這裡第一個位置是1。 substr (string, starting position[, length of string])matchmatch函數返回字串裡找到Regex位置的索引;如果沒找到,返回0。match函數將內建變數RSTART設定為子串的起始位置,設定RLENGTH為到子串末尾為止的字元數。match (string, regular expression)splitsplit函數把字串劃分為一個數組。split將域分割符作為第三個參數,可選;如果沒提供,則預設使用當前FS值。split (string, array[, field separator])sprintfsprintf函數以指定格式返回一個運算式,允許使用printf的格式說明。intint函數捨去小數點後任何數位來建立一個整數。randrand函數產生一個大於或等於0且小於1的偽隨機數。srandsrand沒有參數,就用日期產生rand函數的種子;srand(x)將x作為種子。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.