linux三劍客之awk命令

1.概念

awk:報告生成器,格式化文本輸出。awk其名稱得自於它的創始人Alfred Aho、Peter Weinberger和Brian Kernighan姓氏的首個字母,awk默認以換行符爲標記識別下一行。awk其實是一門編程語言,它支持條件判斷、數組、循環等功能。所以,我們也可以把awk理解成一個腳本語言解釋器。

2.用法

awk [options] 'Pattern{Action}' file1 file2 ...

1)Pattern

awk默認是逐行處理文本內容,”模式“其實就是追加條件,只有滿足條件的的行纔會被處理,常見的模式有以下幾種:

  • BEGIN/END模式,前者表示處理文本之前的行爲 ,後者表示處理完文本後的行爲

  • 關係運算符模式,使用關係運算符來添加限定條件控制awk的輸出,常見關係運算符有 < <= == > >= ~ !~

  • 空模式,即不加限定條件

  • 正則模式,即使用正則表達式來匹配,限定awk輸出

  • 行範圍模式,例如awk '/正則1/,/正則2/{動作}' file這種語法,指定匹配正則1和正則2之間的行來執行動作

2)Action

因爲需要輸出格式化後的文本,所以awk最常用的動作就是print和printf

3)options

  • F:指定輸入分隔符

  • -v:設置變量的值

3.內置變量

  • FS:輸入分隔符,默認爲空白字符

  • OFS:輸出分隔符,默認爲空白字符

  • RS:輸入記錄分隔符,區別下一行內容的標記,默認爲換行符

  • ORS:輸出記錄分隔符,設定每行內容之間的標記,默認爲換行符(使用print輸出)

  • NF:number of field,當前行的字段個數(即當前行被分割成了幾列)

  • NR:bumber of row,行號

  • FNR:file number of row,讀取多個文件時區分設定的行號

  • FILENAME:當前文件名字

  • ARGC:命令行參數的個數

  • ARGV:數組,保存的是命令行給定的各個參數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章