linux awk使用方法

安全劍客發表於2020-05-10
awk是一個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。

linux awk使用方法linux awk使用方法

awk內建變數
ARGC               命令列引數個數
ARGV               命令列引數排列
ENVIRON            支援佇列中系統環境變數的使用
FILENAME           awk瀏覽的檔名
FNR                瀏覽檔案的記錄數
FS                 設定輸入域分隔符,等價於命令列 -F選項
NF                 瀏覽記錄的域的個數
NR                 已讀的記錄數
OFS                輸出域分隔符
ORS                輸出記錄分隔符
RS                 控制記錄分隔符
$0變數是指整條記錄。$1表示當前行的第一個域,$2表示當前行的第二個域,......以此類推。
$NF是number finally,表示最後一列的資訊,跟變數NF是有區別的,變數NF統計的是每行列的總數
常用的命令展示

awk擅長列輸出

搜尋/etc/passwd有root關鍵字的所有行
awk  '/root/' /etc/passwd

【這種是pattern的使用,匹配了pattern(這裡是root)的行才會執行action(沒有指定action,預設輸出每行的內容)】
搜尋/etc/passwd有root關鍵字的所有行,並顯示對應的

awk -F: '/root/ {print $7}' /etc/passwd
統計/etc/passwd:檔名,每行的行號,每行的列數,對應的完整行內容:
awk  -F ':'  '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' /etc/passwd
使用printf替代print,可以讓程式碼更加簡潔,易讀
awk -F: '{printf ("filename:%10s, linenumber:%3s,column:%3s,content:%3f\n",FILENAME,NR,NF,$0)}' /etc/passwd
列印/etc/passwd/的第二行資訊
awk -F: 'NR==2{print "filename: "FILENAME, $0}' /etc/passwd
awk的過濾使用方法
ls -lF | awk '/^d/'
指定特定的分隔符,查詢第一列
awk -F ":" '{print $1}' /etc/passwd

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2691081/,如需轉載,請註明出處,否則將追究法律責任。

相關文章