awk命令詳解

2022-02-21 01:49:39 字數 1369 閱讀 8417

awk是乙個強大的文字分析工具,是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。

awk其名稱得自于它的創始人alfred ahopeter weinbergerbrian 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...