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中,檔案的每一行中,由域分隔符分開的每一項稱為乙個域。預設的域分隔符是空格。
示例1獲取當前目錄下所有檔案大小
ls -l |awk 『』
讀入有"\n"換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,$0則表示所有域,1表示
第乙個域
,1表示第乙個域,
1表示第乙個
域,n表示第n個域。所以$5表示檔案大小以此類推。
示例2顯示 /etc/passwd 的賬戶和賬戶對應的shell,而賬戶與shell之間以tab鍵分割,並且在所有行前新增列名name,shell,在最後一行新增"blue,/bin/nosh"
cat /etc/passwd |awk -f 『:』 『begin end 』
示例3搜尋/etc/passwd有root關鍵字的所有行
awk -f: 『/^root/』 /etc/passwd
pattern的使用示例,匹配了pattern(這裡是以root開頭)的行才會執行action(沒有指定action,預設輸出每行的內容)。
示例4統計/etc/passwd:檔名,每行的行號,每行的列數,對應的完整行內容
awk -f 『:』 『』 /etc/passwd
filename,nr,nf是內建變數,常用變數如下
argc 命令列引數個數
ar** 命令列引數排列
environ 支援佇列中系統環境變數的使用
filename awk瀏覽的檔名
fnr 瀏覽檔案的記錄數
fs 設定輸入域分隔符,等價於命令列 -f選項
nf 瀏覽記錄的域的個數
nr 已讀的記錄數
ofs 輸出域分隔符
ors 輸出記錄分隔符
rs 控制記錄分隔符
結果:
filename:/etc/passwd,linenumber:1,columns:7,linecontent:root❌0:0:root:/root:/bin/bash
使用printf替代print,可以讓**更加簡潔,易讀
awk -f 『:』 『』 /etc/passwd
Linux之awk命令詳解
3.awk的執行過程 1 awk script的組成 awk script可以由一條或多條awk cmd組成,兩條awk cmd之間一般以newline分隔 awk cmd由兩部分組成 awk pattern awk script可以被分成多行書寫,必須確保整個awk script被單引號括起來。2...
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...