運維 三劍客awk(二)

2021-08-19 23:43:59 字數 2367 閱讀 5874

在第一篇awk部落格中學習了awk的基本格式和基本的用法,再來複習一下他的基本格式:

awk  [options]  'program'  file ...

其中program有兩部分組成:pattern 和

pattern部分決定動作語句何時觸發及觸發事件

begin,end

action statements對資料進行處理,放在{}內指明

action 主要是print 和printf 

之前已經了解過print 本次來學習printf(列和列之間的對齊)

printf命令

格式化輸出:printf 「format」, item1, item2, ...

(1) 必須指定format

(2) 不會自動換行,需要顯式給出換行控制符,\n

(3) format中需要分別為後面每個item指定格式符

格式符:與item一一對應

%c: 顯示字元的ascii碼

%d, %i: 顯示十進位制整數

%e, %e:顯示科學計數法數值

%f:顯示為浮點數

%g, %g:以科學計數法或浮點形式顯示數值

%s:顯示字串

%u:無符號整數

%%: 顯示%自身

修飾符:

#[.#]:第乙個數字控制顯示的寬度(即輸出多少個字元或數字);

第二個#表示小數點後精度%3.1f

-: 左對齊(預設右對齊)

+:顯示數值的正負符號 

既然是格式化輸出那麼一定要有格式,如果沒有格式會怎麼樣呢?

此時用printf如果沒有指定格式那麼就是上面這個情況,所以我們在使用printf之前必須要對其格式進行定義(定義之前請認真學習上面的內容)

操作符算術操作符:

x+y, x-y, x*y, x/y, x^y, x%y

-x: 轉換為負數

+x: 轉換為數值

字串操作符:沒有符號的操作符,字串連線

賦值操作符:

=, +=, -=, *=, /=, %=, ^=

++, --

下面兩語句有何不同

awk 『begin』輸出結果為 1 1

awk 『begin』輸出結果為 0 1

邏輯操作符:與&&,或||,非!

示例:awk –f: '$3>=0 && $3<=1000 ' /etc/passwd

awk -f: '$3==0 || $3>=1000 ' /etc/passwd

awk -f: 『!($3==0) ' /etc/passwd

awk -f: 『!($3>=500) 』 /etc/passwd

之前要進行計算可以使用bc,現在也可以使用print來計算例如:

賦值操作符

邏輯操作符

i有值為真,沒有值為假,輸出結果1為真,0為假

條件表示式(三目表示式):

condition?if-true-expression:if-false-expression

先判斷條件,如果條件為真執行問號後的語句,如果條件為假執行冒號後的語句

例:

模式匹配符:

~:左邊是否和右邊匹配包含 !~:是否不匹配

查詢包含root的行並以冒號為分隔符輸出第乙個字段

查詢不包含root的行並以冒號為分隔符輸出第乙個字段

三劍客之awk

awk命令的執行過程 滿足 awk從檔案中讀取一行內容到記憶體中 判斷是否滿足條件 滿足 執行對應的命令 輸出到螢幕 不滿足 awk從檔案中讀取一行內容到記憶體中 判斷是否滿足條件 不滿足 繼續讀取檔案裡的內容直到檔案最後awk命令的語法awk 引數 模式 檔案 awk 引數 條件 找誰 檔案 表示...

linux 三劍客之 awk

awk是一種程式語言,用於在linux unix下對文字和資料進行處理。資料可以來自標準輸入 stdin 乙個或多個檔案,或其它命令的輸出。它支援使用者自定義函式和動態正規表示式等先進功能,是linux unix下的乙個強大程式設計工具。它在命令列中使用,但更多是作為指令碼來使用。awk有很多內建的...

linux三劍客(重點awk)

grep sed awk被稱為linux中的 三劍客 三者各有特長,具體見下 grep 更適合單純的查詢或匹配文字 sed 更適合編輯匹配到的文字 awk 更適合格式化文字,對文字進行較複雜的格式處理 awk命令格式 awk v fs v ofs begin end test fs處可為輸入 出欄位...