Linux常用命令——awk
阿新 • • 發佈:2018-06-17
簡介 作用 簡單 換行符 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執行過程:
- awk 讀入第一行內容
- 判斷是否符合模式中的條件(如:NR>=2)
a. 如果匹配則執行對應的動作(如:{print $0})
b. 如果不匹配條件,繼續讀取下一行 - 繼續下一行
- 重復過程 1-3,知道讀取到最後一行(EOF:end of file)
關於記錄的簡單說明:
- 大象放冰箱分幾步?打開冰箱門,把大象放進去,關閉冰箱門。
- 對使用 NR、NF、$數字,配合調試你的 awk 命令。
- NR 存放著每個記錄的號(行號)讀取新行時候會自動 +1
- RS 是記錄的分隔符,簡單理解就是可以指定每個記錄的結尾標誌。
- 用 RS 代替 \n
- RS 作用就是表示一個記錄的結束
- FS 標誌著每個區域的結束
awk 的基本結構
awk BEGIN{coms} /pattern/{coms} END{coms}
開始模塊,/找誰/{幹啥},結束模塊 - BEGIN 和END 模塊只能有一個,BEGIN{}BEGIN{} 或者 END{}END{}
- 找誰幹啥模塊,可以有多個(例如: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