linux三劍客(重點awk)

2021-10-03 05:14:44 字數 1212 閱讀 4641

grep、sed、awk被稱為linux中的 「三劍客」。

三者各有特長,具體見下:

grep:更適合單純的查詢或匹配文字

sed:更適合編輯匹配到的文字

awk:更適合格式化文字,對文字進行較複雜的格式處理

awk命令格式:awk –v fs=』#』 –v ofs=』—』 『begin end 』 test

fs處可為輸入/出欄位分隔符,也可為輸入輸出分割記錄符(rs,ors),自變數定義

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

end:結尾**塊,對每一行處理之後再執行的**塊

nr顯示行號時,多個檔案回按照順序進行排序;

fnr顯示行號時,分別對每個檔案進行計數

filename:當前檔名

argc:命令列引數的個數

ar**:陣列,儲存的是命令列多給定的引數

使用表示之前的字元連續出現x次的將被匹配到,使用表示之前的字元出現0-x次,使用表示之前的字元最少出現x次;

「」表示之前的字元出現任意次數;

「.」表示任意長度的任意字元

「.」表示匹配任意單個字元

?:表示匹配其前面的字元0或1次,就是前面的字元要麼沒有,要麼有乙個;

+:表示匹配其前面的字元至少一次,就是前面的字元必須有至少乙個;

[[:alpha:]]表示任意大小寫字母,等價於[a-za-z]

[[:lower:]]表示任意小寫字母,等價於[a-z]

[[:upper:]]表示任意大寫字母,等價於[a-z]

[[:digit:]]表示0到9之間的任意單個數字,等價於[0-9]

[[:alnum:]]表示任意數字或字母

[[:space:]]表示任意空白字元,包括「空格」、「tab鍵」等

[[:punct:]]表示任意標點符號

:在正規表示式中匹配指定範圍內的任意單個字元

[^]:表達範圍外的任意單個字元

分組:把某個物件當做整體(如(hello),最後匹配兩次hello)

後向引用,見下圖:

經典例項(選ipv4):

例項分析:紅線區域表示選取一到三位數字的字串,.表示轉義為普通的「.」;

藍色區域表示之前的字串連續出現3次;

綠色區域表示1-3位的字串出現一次

linux 三劍客之 awk

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

linux三劍客之awk

linux三劍客 grep sed awk 與sed類似,awk是行處理器 相比較螢幕處理的優點,在處理龐大檔案時不會出現記憶體溢位或是處理緩慢的問題,它可以對每一行進行切片處理 awk處理過程 依次對每一行進行處理,然後輸出 awk命令形式 awk f f v begin end file f f...

三劍客之awk

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