linux三劍客之awk

2022-04-03 09:22:20 字數 1640 閱讀 1706

linux三劍客:grep、sed、awk

與sed類似,awk是行處理器: 相比較螢幕處理的優點,在處理龐大檔案時不會出現記憶體溢位或是處理緩慢的問題,它可以對每一行進行切片處理

awk處理過程:依次對每一行進行處理,然後輸出

awk命令形式:

awk [-f|-f|-v] 『begin{} // end{}』 file

[-f|-f|-v] 大引數,-f指定分隔符,-f呼叫指令碼,-v定義變數 var=value

' ' 引用**塊

begin 初始化**塊,在對每一行進行處理之前,初始化**,主要是引用全域性變數,設定fs分隔符

// 匹配**塊,可以是字串或正規表示式

{} 命令**塊,包含一條或多條命令

; 多條命令使用分號分隔

end 結尾**塊,在對每一行進行處理之後再執行的**塊,主要是進行最終計算或輸出結尾摘要資訊

01內部變數

$0

表示整個當前行$1

每行第乙個字段

nf 字段數量變數

nr 每行的記錄號,多檔案記錄遞增

fnr 與nr類似,不過多檔案記錄不遞增,每個檔案都從1開始

filename 檔名

eg:awk -f ':' '' /etc/passwd

awk -f ':' '' /etc/passwd

02模式匹配   

~            匹配,與==相比不是精確比較

!~不匹配,不精確比較

==等於,必須全部相等,精確比較

!= 不等於,精確比較

==         等於,必須全部相等,精確比較

!=           不等於,精確比較

&&      邏輯與

||             邏輯或

+            匹配時表示1個或1個以上

/[0-9][0-9]+/   兩個或兩個以上數字

/[0-9][0-9]*/    乙個或乙個以上數字

eg:awk -f ':' '$1~/^h.*/' /etc/passwd

輸出以h開頭的行及行號

-f'[:#/]'   定義三個分隔符

04條件判斷

awk -f ':'

'' /etc/passwd

awk -f ':'

'$3>999

' /etc/passwd

06實戰:

061統計當前資料夾下 檔案/資料夾占用的大小

#方法一

du -sh .

#方法二

ls -l |awk 'beginend'

062統計uid大於100的使用者數

awk -f ':'

'begin end{for (i=0;i' /etc/passwd

linux 三劍客之 awk

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

三劍客之awk

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

linux三劍客之awk詳解

awk是行處理器 相比較螢幕處理的優點,在處理龐大檔案時不會出現記憶體溢位或是處理緩慢的問題,通常用來格式化文字資訊 awk處理過程 依次對每一行進行處理,然後輸出 awk命令形式 awk option program file 其中program pattern什麼是域?通過分隔符將字串分割的字段...