awk是乙個非常強大的文字報告生成器,用於輸出格式化文字輸出。
awk:是由aho,weinberger,kernighan三個人名命名
基本用法:
swk [options] 'program' file
program:pattern
語句之間用分號分隔
選項:-f:指明輸入時用到的字段分隔符
-v var=value:自定義變數
輸出命令:
1、print
print 專案1,專案2...
要點:1、逗號做分隔符
2、輸出的各專案可以是字串、數值、當前記錄的字段、變數或awk的表示式
3、如果省略專案,則相當於print $0:顯示整行
2、變數
內建變數
fs:輸入字段分隔符,預設為空白字元
ofs:輸出字段分隔符,預設為空白字元
rs:輸入時的換行符
ors:輸出時的換行符
nf:字段數量
:顯示字段數,:顯示最後乙個字段
nr:檔案行數,每行計數一次,多檔案累積計數
fnr:多個檔案分別計數
filename:當前檔名
argc:命令列引數的個數
argv:陣列,儲存命令列所給定的各引數
自定義變數
1、-v var=value
變數名區分大小寫
2、在program中直接定義
3、printf命令
格式化輸出:printf 格式符,專案1,專案2...
1、格式符必須要給出
2、不會自動換行,需要顯式給出換行控制符,\n
3、格式符中需要分別為後面的沒乙個專案指定乙個格式化符號
格式符:
%c:顯示字元的ascii碼
%d,%i:顯示十進位制整數
%e,%e:科學計數法數值顯示
%f:顯示為浮點數
%g,%g:以科學計數法或浮點形式顯示數值
%s:顯示字串
%u:無符號整數
%%:顯示%自身
修飾符:
#[.#]:第乙個數字控制顯示寬度;第二個數字表示小數點後精度
-:左對齊
+:顯示數值的符號
4、操作符
算術操作符
+,-,*,/,^,%
-x:使數值變為負數
+x:字串轉變為數值
字串操作符:沒有符號的操作符,字串連線
賦值操作符
=,+=,-=,*=,/=,%=,^=
++,--
比較操作符
>,>=,<,<=,!=,==
模式匹配符
~:是否匹配
!~:是否不匹配
邏輯操作符
&&||
!函式呼叫:
函式名(引數1,2,...)
條件表示式:
條件表示式?為真執行語句:為假執行語句
5、pattern
1、empty:控模式(可以不加),匹配每一行
2、/正規表示式/:僅處理正規表示式匹配到的行
3、關係表示式:結果為「真」才會被處理
真:結果為非0值,非空白字串;
4、/pat1/,/pat2/:位址定界(不支援直接給出數字)
5、begin/end模式:
begin{}:僅在開始處理文字之前執行一次;
end{}:僅在文字處理完成之後執行一次;
6、常用的action
1.表示式
2.控制語句:if,while等
3.組合語句
4.輸入語句
5.輸出語句
7、控制語句
1.if-else
語法:if(condition) statement [else statement]
使用場景:對awk取得的整行或某個欄位做條件判斷
顯示系統中的所有使用者是系統使用者還是普通使用者
awk -f: ' else }' /etc/passwd
2.while迴圈
語法:while(condition) statement
條件「真」,進入迴圈;條件「假」,退出迴圈;
使用場景:對一行內的多個字段逐一類似處理時試用;對陣列中的各元素逐一處理時使用;
顯示字段字元個數
awk '/^[[:space:]]*linux16/}' /etc/grub2.cfg
3.do-while迴圈
語法:do statement while(condition)
意義:至少執行一次迴圈體
4.for迴圈
語法:for(初始變數;變數賦值;控制修正) statement
顯示字段字元個數
awk '/^[[:space:]]*linux16/}' /etc/grub2.cfg
5.switch語句
語法:switch(expression)
6.break和continue
break [n]
continue
7.next
提前結束對本行的處理直接進入下一行;
8.array
關聯陣列:array[index-expression]
index-expression:
1.可使用任意字串;字串要使用雙引號;
2.如果某陣列元素事先不存在,在引用時,awk會自動建立此元素,
並將其值初始化為「空串」;
若要判斷陣列中是否存在某元素,要使用「index in array」格式進行
若要遍歷陣列中的每個元素,要使用for迴圈
for(var in array)
netstat -tan | awk -tan '/^tcp\>/end}'
9、函式
1. 內建函式
數值處理
rand():返回0~1之間的乙個隨機數
字串處理:
length([s]):返回指定字串的長度;
sub(r,s[,t]):以r表示的模式來查詢t所表示的字串中的匹配內容,並將
其第一次出現替換為s所表示的內容;
gsub(r,s[,t]):以r表示的模式來查詢t所表示的字串中的匹配內容,並將
其所有出現替換為s所表示的內容;
split(s,a[,r]):以r為分隔符切割字元s,並將切割後的結果儲存至a所表示的陣列中;
2. 自定義函式
awk工具使用
awk 是一種 樣式掃瞄和處理語言 它允許您建立簡短的程式,這些程式讀取輸入檔案 為資料排序 處理資料 對輸入執行計算以及生成報表。它的名稱取自於它的創始人 alfred aho peter weinberger 和 brian kernighan 姓氏的首個字母。本文論述的 awk 命令主要指 l...
AWK工具使用學習筆記(一)
awk 思維 基於模式動作形式,在動作前指定特定的模式,使動作在記錄滿足模式時才執行。基本概念 1 模式和動作 模式 即觸發動作的條件 模式部分決定動作何時觸發及觸發事件。可以是 a 條件語句 if 4 green b 復合語句 and or c 正規表示式 awk 0 gg reen grade....
01 awk工具的使用
一 登入mysql後檢視mysql的連線狀態 show status 回車 如圖所示 threads connected 1 threads running 1 表示幾個程序在工作 倒數第三個 queries 5 二 新建乙個測試資料 vim score.txt name yw sx lisi 66...