awk程式語言/資料處理引擎
創造者:aho、weinberger、kernighan
基於模式匹配檢查輸入文字,逐行處理並輸出
通常用在shell指令碼中,獲取指定的資料
單獨用時,可對文字資料做統計
命令格式解析
主要用法
格式1:前置命令|awk [選項] '[條件]'
格式2:awk[選項]'[條件] '檔案
awk '' test.txt
常用命令選項
-f:指定分隔符,可省略(預設空格或tab位)
awk -f :'' /etc/passwd
檢視登入失敗的ip位址有哪些
awk '/failed/' /var/log/secure
檢視記憶體的剩餘容量
free | awk '/mem/'
過濾網路流量
ifconfig eth0 | awk '/rx p/'
awk內建變數
fs 儲存或設定字段分隔符,例如fs=":",與-f功能一樣
$n 指定分隔的第n個字段,如$1、$3分別表示第1、第3列
$0 當前讀入的整行文字內容
nf 記錄當前處理行的字段個數(列數)
nr 記錄當前已讀入行的數量(行數)
awk -f :'' /etc/passwd
awk -f:'' /etc/passwd //輸出每行的最後乙個字段
awk -f:'' /etc/passwd
awk過濾的時機
在所有行前處理,begin{}
讀入第一行文字之前執行
一般用來初始化操作
逐行處理,{}
逐行讀入文字執行相應的處理
是最常見的編輯指令塊
在所有行後處理,end{}
處理完最後一行文字之後執行
一般用來輸出處理結果
awk過濾時機
awk 'begin' //預處理不需要資料檔案
//統計使用bash的使用者個數
awk 'begin/\//預處理時,行數為0
//全部處理完以後,行數為已讀入文字的行數
awk 'begin end' m.txt
使用awk提取文字
條件設定示例
-/正規表示式
-~匹配、!~不匹配
//列出以ro開頭的使用者
awk -f: '/^ro' /etc/passwd
//列出第7個字段不以bash結尾的使用者名稱、登入shell
awk -f:'$7!~/bash$/' /etc/passwd
條件設定示例
數值比較
==等於、!=不等於
awk 'nr==2' reg.txt //輸出第2列文字
awk '$2!="xx"' reg.txt //輸出第2列不是xx的行
awk 'nf >=2' reg.txt //輸出包含2個及以上欄位的行
多個條件比較測試
&&邏輯與:期望多個條件都成立
|| 邏輯或:只要有乙個條件成立即可滿足要求
//列出uid少於2的使用者資訊
awk -f:'$3>=0&&$3<2' /etc/passwd
//列出uid為1或7的使用者資訊
awk -f: '$3==1||$3==7' /etc/passwd
變數的運算
//輸出奇數行文字
awk 'nr%2==1' reg.txt
//統計文字的總欄位個數
awk 'begin end' reg.txt
//計算能同時被3和13整除的整數個數
seq 200 | awk 'begin ($0%3==0)&&($0%13==0)end'
awk基本用法
1 awk f begin etc passwd 以 為分隔符,處理前列印name,列印第一列 2 awk f beginend etc passwd 以 為分隔符,處理列印前name,列印第一列,在處理後列印總行數 3 awk f beginend etc passwd 以 為分隔符,處理前列印n...
AWK基本用法
1 awk的基本用法 其中options代表引數,單引號中的內容代表要執行的命令,filename代表檔名 awk options 如 awk f,log.txt 上面這段命令的含義是,列印檔案log.txt的每一行的第乙個和第二個字串,每一行的每個字串中間的分隔符為 當沒有引數 f時,預設的分隔符...
awk基本用法 vbird
awk 條件型別1 條件型別2.filename 最基本的用法是取一行當中的某個字段 who awk 列出第乙個和第三個字段,在每一行的每個欄位都是有變數名稱的,那就是 1,2等變數名稱。0代表一整行資料的意思。awk的內建變數 nf number of field 每一行擁有的字段總數 nr nu...