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 引數 條件 找誰 檔案 表示...