三劍客命令awk概述
gawk : pattern scanning and processing language
可以進行模式掃描 和 是一門語言
語法 : awk [參數(shù)] '模式{動作}' 文件
sed [參數(shù)] '條件 指令' 文件信息
- awk 原理圖
awk命令執(zhí)行流程.png
- 三劍客命令awk作用
處理文件信息:文本文件信息 日志文件信息 配置文件信息
處理方式文件:排除信息 查詢信息 統(tǒng)計信息 替換信息
對文件進行處理
三劍客命令awk操作
創(chuàng)建測試環(huán)境
Zhang Dandan 41117397 :250:100:175
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75
Liu Bingbing 41117483 :250:100:175
Wang Xiaoai 3515064655 :50 :95 :135
Zi Gege 1986787350 :250:168:200
Li Youjiu 918391635 :175:75:300
Lao Nanhai 918391635 :250:100:175
-
顯示xiaoyu的姓氏和ID號碼
awk '$2~/Xiaoyu/{print $1,$3}' reg.txt
image.png 姓氏是Zhang的人,顯示他的第二次捐款金額及他的名字
awk -F "[: ]+" '$1~/Zhang/{print $1,$2,$5}' reg.txt
image.png
- 顯示所有以41開頭的ID號碼的人的全名和ID號碼
awk '$3~/^41/{print $1,$2,$3}' reg.txt|column -t
image.png
- 顯示所有ID號碼最后一位數(shù)字是1或5的人的全名
awk '$3~/[15]$/{print $1,$2}' reg.txt|column -t
image.png
- 獲取文件中有井號或空行的內容, 將空行和井號信息的行排除
awk '$0!~/#|^$/' reg.txt
---方法一
awk '$0!~/#|^$/{print $0}' reg.txt
---方法二
image.png
- 顯示Xiaoyu的捐款,每個捐款數(shù)額都是以
110
330
awk 'NR>2' reg.txt
顯示第二個以后的行 不包括第二行
awk 'NR==2,NR==4' reg.txt
顯示第2到第4行的數(shù)據(jù)
awk 'NR==2;NR==4' reg.txt
分別顯示第二行和第四行的數(shù)據(jù)
awk特殊模式:
BEGIN{動作}: 在處理文件之前,先做什么事情
image.png
- 用于計算
image.png
- 修改內置變量
NF:取出最后一列
awk '{print $(NF-1)}' reg.txt
取出倒數(shù)第二列
image.png
NR: 表示行信息
FS: 指定列分隔符, 默認識別空格為分割符
awk 'BEGIN{FS="[: ]+"}{print $4}' reg.txt
image.png
指定一個變量
awk -vFS="[: ]+" '{print $1,$4}' reg.txt
image.png
- END{動作}: 在處理文件之后,再做什么事情
awk 'BEGIN{print "姓","名","號碼","捐款記錄"}{print $0}END{print "學生捐款登記表"}' reg.txt|column -t
image.png
實際作用:可以將統(tǒng)計后的最終結果進行輸出
awk對文件進行統(tǒng)計分析
1) awk統(tǒng)計運算公式
i=i+1
1.統(tǒng)計文件行數(shù)
awk '/oldboy/{i=i+1}END{print i}' test.txt
awk '/oldboy/{i++}END{print i}' test.txt
image.png
2.數(shù)值信息求和運算
sum=sum+$n $n 你要對文件第幾列信息做求和運算
seq 10|awk '{sum=sum+$1}END{print sum}'
image.png
練習: 找出有faild信息, 總共出現(xiàn)了多少次 (awk統(tǒng)計)
awk '$6~/Failed/{i++}END{print i}' secure-20161219'
image.png
課程知識梳理
1) awk命令概念介紹: 語法 原理 BEGIN 處理文件 END
2) awk命令操作說明: 作用 查詢 排除 替換
參數(shù):
-F : 指定列分割符號
-v : 指定變量信息
動作:
print : 輸出指定信息
gsub : 替換指定信息
符號:
~ : 匹配信息 按照指定列進行匹配
!~ : 將匹配的信息取反
// : 指定匹配信息
3) awk命令模式分類
BEGIN{}: 處理文件前, 執(zhí)行什么動作
END{}: 處理文件后, 執(zhí)行什么動作
內置變量: FS NF NR --$0
4) awk命令實現(xiàn)運算功能
累加公式: i=i+1 i++
求和運算: sum=sum+$n