awk工具使用

2021-08-14 23:23:13 字數 3273 閱讀 6975

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...