linux三劍客之awk,以字段為單位進行處理資料的處理,統計。作為開發人員也應熟練掌握
awk 引數 『模式』 檔案
1、-f "[ ]"
,以指定分隔符號分隔,也就是多個字段
2、print
列印輸出
3、$n
第n列
4、$0
表示一整行
5、nf
列的數量
6、$nf
最後1列名稱
# nf當前列總數
# 列印第一行列總數
awk'nr==1'
# $nf 表示最後1列的名稱,
awk''
# -vofs='\t' 輸出指定分割符
awk -vofs=
"\t"
'1'# 列印1,3列
'' 顯示指定列
# 列印第1-10列
awk -vofs=
'\t'
'1'
awk
'/php/'
file
# 找出包含php的行
awk'/^$/'
file
# 查詢空行
awk'$2~/php/'
file
# 查詢第二列包含php的行
awk'$3~/[15]$/'
file
# 以1或5結尾
# /目標/,"替換內容",(第幾列);print
awk'' reg.txt
end{}會在讀取完檔案的最後一行執行
# 統計空行數量
awk'/^$/end'
file
1、統計網域名稱開頭出現的次數
awk -f "[/.]+"
'end'
file
3 2awk -f "[/.]+"
'end'
file
www 3
*** 1
post 2
2、統計access.log中ip出現的次數並排序
awk
'end' ./access.log
sort
-n
:按數值大小進行排序。
-k
:按第幾列進行排序。
-r
:逆序。
3、統計出secure檔案中每個使用者和每個ipfailed錯誤的次數
# 內容:
# failed password for invalid user mashby from 120.52.120.166 port 47904 ssh2
awk'/failed/' /var/log/secure |
sort
|uniq -c|
sort -n
# 顯示結果:
208 root 43.225.180.227
310 root 115.239.253.159
633 root 210.245.107.92
命令解釋:
$(nf-5)
:$nf表示最後一列,$(nf-3)則表示ip
srot
:預設以ascii 碼的次序排列,先進行排列,所有相同的行就會出現在相連的地方。
uniq -c
:uniq用於去除相鄰位置的行例如。-c引數則用於在每列旁邊顯示該行重複出現的次數。
# sort前
aaaaaaa
ccccccc
aaaaaaa
# sort後
aaaaaaa
aaaaaaa
ccccccc
# uniq之後
aaaaaaa
bbbbbbb
Linux awk使用示例
awk用法 awk pattern argc 命令列變元個數 argv 命令列變元陣列 filename 當前輸入檔名 fnr 當前檔案中的記錄號 fs 輸入域分隔符,預設為乙個空格 rs 輸入記錄分隔符 nf 當前記錄裡域個數 nr 到目前為止記錄數 ofs 輸出域分隔符 ors 輸出記錄分隔符 ...
Linux awk 使用用例
環境 centos 鑑於語句描述蒼白無力,用例子直接說明。檔案內容 zilzhang 19881110 jiangxi 18 film zhagnsan 21321 sichuan 100 card 1.列印整行 awk mytxt zilzhang 19881110 jiangxi 18 film...
Linux awk命令的使用
awk是linux非常強大的報告生成工具 基本使用格式 awk options script file awk options pattern file option f 切割符 0整行 1第一列 2第二列.位址定界 pattern1 pattern2 兩個正則之間的範圍 pattern 所有被匹配...