1. 程式人生 > >Linux常用命令——awk

Linux常用命令——awk

簡介 作用 簡單 換行符 ado 分隔 大於 com dde

awk 一種編程語言

語法格式:awk 【option】‘pattern{action}‘【file】... awk [選項] ‘條件{動作}‘ [文件] ...
註意:awk 命令及後面的選項和文件裏,每個元素之間都要至少要有一個空格
選項說明:

參數選項 解釋說明
-F 指定字符安分隔符
-v 定義或修改一個 awk 內部的變量
$ 取、引用
$1 第一個列
$0 整行
$NF 最後一行
$(NF-1) 倒數第二行
RS 每個記錄讀入的時候的分隔符(類似於換行符 \n)
NR 行號,記錄的數
ORS 輸出時候的分隔符

關系運算符

運算符 含義 示例
< 小於 x < y
<= 小於等於 x <= y
== 等於 x == y
!= 不等於 x != y
>= 小於 x < y
< 大於等於 x >= y
> 大於 x > y
~ 與正則表達式匹配 x~/y/
!~ 與正則表達式不匹配 x!~y

案例一:
awk 環境簡介
技術分享圖片
案例二:
awk執行過程:

  1. awk 讀入第一行內容
  2. 判斷是否符合模式中的條件(如:NR>=2)
    a. 如果匹配則執行對應的動作(如:{print $0})
    b. 如果不匹配條件,繼續讀取下一行
  3. 繼續下一行
  4. 重復過程 1-3,知道讀取到最後一行(EOF:end of file)

    關於記錄的簡單說明:

  5. 大象放冰箱分幾步?打開冰箱門,把大象放進去,關閉冰箱門。
  6. 對使用 NR、NF、$數字,配合調試你的 awk 命令。
  7. NR 存放著每個記錄的號(行號)讀取新行時候會自動 +1
  8. RS 是記錄的分隔符,簡單理解就是可以指定每個記錄的結尾標誌。
  9. 用 RS 代替 \n
  10. RS 作用就是表示一個記錄的結束
  11. FS 標誌著每個區域的結束

    awk 的基本結構
    awk BEGIN{coms} /pattern/{coms} END{coms}
    開始模塊,/找誰/{幹啥},結束模塊

  12. BEGIN 和END 模塊只能有一個,BEGIN{}BEGIN{} 或者 END{}END{}
  13. 找誰幹啥模塊,可以有多個(例如:NR==2{print $1} NR==5{print $0})
    案例三:
    參數 RS,NR 舉例
    技術分享圖片
    技術分享圖片
    說明:RS 為空值時,在行手打印輸出記錄號,並打印出每一行 $0 的內容
    正則表達式簡單舉例
    技術分享圖片
    註意:$1~ 表示匹配第一列(第一個區域),o{1,2} 表示條件有一個或兩個 o,{print NR,$1,NF} 表示打印 行號,第一列,最後一列
    案例四:
    使用 awk 取出對應的端口號、
    技術分享圖片
    統計文件裏面的空行數量
    技術分享圖片
    new 文件裏面,以空格為分隔符,區域 3 大於 15,有多少行
    技術分享圖片
    技術分享圖片
    技術分享圖片
    使用 awk 實現 1 加到 100 的值
    技術分享圖片

Linux常用命令——awk