awk是乙個強大的文字分析工具,是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。
awk其名稱得自于它的創始人alfred aho
、peter weinberger
和brian kernighan
姓氏的首字母。實際上 awk 的確擁有自己的語言: awk程式語言,三位建立者已將它正式定義為「樣式掃瞄和處理語言」。它允許您建立簡短的程式,這些程式讀取輸入檔案、為資料排序、處理資料、對輸入執行計算以及生成報表,還有無數其他的功能。
awk [-f field-separator] 'commands' input-file(s)
其中,commands 是真正awk命令,[-f域分隔符]是可選的。 input-file(s) 是待處理的檔案。
在awk中,檔案的每一行中,由域分隔符分開的每一項稱為乙個域。預設的域分隔符是空格。
獲取當前目錄下所有檔案大小
ls -l |awk ''
讀入有"\n"換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,$0則表示所有域,$1表示第乙個域,$n表示第n個域。所以$5表示檔案大小以此類推。
顯示 /etc/passwd 的賬戶和賬戶對應的shell,而賬戶與shell之間以tab鍵分割,並且在所有行前新增列名name,shell,在最後一行新增"blue,/bin/nosh"
cat /etc/passwd |awk -f ':' 'begin end '
搜尋/etc/passwd有root關鍵字的所有行
awk -f: '/^root/' /etc/passwd
pattern的使用示例,匹配了pattern(這裡是以root開頭)的行才會執行action(沒有指定action,預設輸出每行的內容)。
統計/etc/passwd:檔名,每行的行號,每行的列數,對應的完整行內容
awk -f ':' '' /etc/passwd
filename,nr,nf是內建變數,常用變數如下
結果:
filename:/etc/passwd,linenumber:1,columns:7,linecontent:root:x:0:0:root:/root:/bin/bash
使用printf替代print,可以讓**更加簡潔,易讀
awk -f ':' ''
/etc/passwd
略,留給運維同學去研究。
awk程式設計的內容超級多,更多請參考 the gnu awk user』s guide
awk命令詳解
本文編輯整理自 一 前言 awk有3個不同版本 awk nawk和gawk,未作特別說明,一般指gawk。awk語言的最基本功能是在檔案或字串中基於指定規則來分解抽取資訊,也可以基於指定的規則來輸出資料。完整的awk指令碼通常用來格式化文字檔案中的資訊。二 基本語法 awk opion awk sc...
awk命令詳解
參考 size large color green b shell獲取某個時間段的nginx日誌內容 b color size 針對以上內容,要查詢出2018 03 29 14 03至2018 03 29 14 05之間的內容,可以使用awk命令來處理 cat time1.log egrep 201...
Linux之awk命令詳解
3.awk的執行過程 1 awk script的組成 awk script可以由一條或多條awk cmd組成,兩條awk cmd之間一般以newline分隔 awk cmd由兩部分組成 awk pattern awk script可以被分成多行書寫,必須確保整個awk script被單引號括起來。2...