awk是一種程式語言,用於在linux/unix下對文字和資料進行處理。資料可以來自標準輸入(stdin)、乙個或多個檔案,或其它命令的輸出。它支援使用者自定義函式和動態正規表示式等先進功能,是linux/unix下的乙個強大程式設計工具。它在命令列中使用,但更多是作為指令碼來使用。awk有很多內建的功能,比如陣列、函式等,這是它和c語言的相同之處,靈活性是awk最大的優勢。基本格式 條件+命令
注: 此圖由 無痕有靜 提供,更多乾貨請參閱
專案value
-f修改分隔符(預設分隔符為空格)
-v修改內建變數
-vofs
修改輸出的分隔符 (把逗號替換為 詳見示例)
-vfieldwidths
修改輸出格式 以每列n個字元顯示
示例:
-f
[root@alice ~]# awk -f: '' /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/syn
-vofs
# 把$1,$2 中間的逗號 替換為; 不可直接替換所有
[root@alice ~]# awk -f: -vofs=";" '' /etc/passwd
root;x;0;0
bin;x;1;1
daemon;x;2;2
adm;x;3;4
lp;x;4;7
sync;x;5;
-vfieldwidths
[root@alice ~]# echo 20190326 |awk -vfieldwidths="4 2 2" ''
2019 03 26
[root@alice ~]# echo 20190326 |awk -vfieldwidths="4 2 2" -vofs="-" ''
2019-03-26
awk倒可樂 替換第一列和最後一列的位置
[root@alice tmp]# awk -f: -vofs=: '' /etc/passwd
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
顯示 文字中花括號內包含 www的行
[root@alice tmp]# cat range.log
www is a linuxer.
device:
www[root@alice tmp]# awk '//' range.log
www
顯示文字中包含www的行
[root@alice tmp]# awk '/www/' range.log
www is a linuxer.
wwwwww
匹配文字中第五列是root的行
注 在awk中 所有字母否預設為乙個變數 所以此處root需要加雙引號
[root@alice tmp]# awk -f: '$5=="root"' /etc/passwd
root:x:0:0:root:/root:/bin/bash
統計日誌中每個ip位址使用的流量
[root@alice tmp]# head -n2 access.log
[root@alice tmp]# awk 'end' access.log |sort -rn|head
31362956 114.83.184.139
22431302 117.136.66.10
21466000 116.216.30.47
21464856 223.104.5.197
19145329 116.216.0.60
17219553 114.141.164.180
17121524 114.111.166.22
16911512 223.104.5.202
15969887 116.228.21.187
15255013 112.64.171.98
統計每個ip位址出現的次數
[root@alice tmp]# awk 'end' access.log |sort -rn|head
12049 58.220.223.62
10856 112.64.171.98
1982 114.83.184.139
1662 117.136.66.10
1318 115.29.245.13
961 223.104.5.197
957 116.216.0.60
939 180.111.48.14
871 223.104.5.202
869 223.104.4.139
統計系統使用者數量
[root@alice tmp]# awk -f: 'else if($3>0 && $3<1000)else if($3>=1000)}end' /etc/passwd
超級管理員有1個
系統使用者有24個
普通使用者有1個
linux三劍客之awk
linux三劍客 grep sed awk 與sed類似,awk是行處理器 相比較螢幕處理的優點,在處理龐大檔案時不會出現記憶體溢位或是處理緩慢的問題,它可以對每一行進行切片處理 awk處理過程 依次對每一行進行處理,然後輸出 awk命令形式 awk f f v begin end file f f...
三劍客之awk
awk命令的執行過程 滿足 awk從檔案中讀取一行內容到記憶體中 判斷是否滿足條件 滿足 執行對應的命令 輸出到螢幕 不滿足 awk從檔案中讀取一行內容到記憶體中 判斷是否滿足條件 不滿足 繼續讀取檔案裡的內容直到檔案最後awk命令的語法awk 引數 模式 檔案 awk 引數 條件 找誰 檔案 表示...
linux三劍客之awk詳解
awk是行處理器 相比較螢幕處理的優點,在處理龐大檔案時不會出現記憶體溢位或是處理緩慢的問題,通常用來格式化文字資訊 awk處理過程 依次對每一行進行處理,然後輸出 awk命令形式 awk option program file 其中program pattern什麼是域?通過分隔符將字串分割的字段...