粗談awk

AWK的功能是什麼?與sed和grep很相似,awk是一種樣式掃描與處理工具。但其功能卻大大強於sed和grep。awk提供了極其強大的 功能:它幾乎可以完成grep和sed所能完成的全部工作,同時,它還可以可以進行樣式裝入、流控制、數學運算符、進程控制語句甚至於內置的變量和函數。 它具備了一個完整的語言所應具有的幾乎所有精美特性。實際上,awk的確擁有自己的語言:awk程序設計語言,awk的三位創建者已將它正式定義爲:樣式 掃描和處理語言。(摘自鳥哥)。。。
調用awk的三種方式:
1 命令行方式
awk [-F field-separator] ‘commands’ input-file
其中,commands 是真正的awk命令, 參數-F是可選的, input-files是要處理的文件
參數:
-F 允許awk更改其子段分隔符。
-v $var=v 把v值賦值給var, 如果多個變量要賦值,就多寫幾個-v

2 shell腳本方式
即將所有的awk命令插入一個文件,並使awk程序可執行,然後awk命令解釋器作爲腳本的首行,一般通過鍵入腳本文件名來調用
類似於shell首行的#!/bin/bash–>#!/bin/awk
3 將所有的awk命令插入一個大肚文件,然後調用
awk -f awk-script-file input-file(s)
-f profile 允許awk調用並執行profigure程序.
Example:
1 last -n 5 && last -n 5 | awk ‘{print $1}’
這裏寫圖片描述
只顯示最近登錄的5個用戶 ,
awk的工作流程爲:讀入有’\n’換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,0, 1表示第一個域,nn"""[tab]", 1表示登錄用戶,3表示登錄用戶ip,以此類推。  
2 nl /etc/passwd | awk -F ‘:’ ‘{print
1}’
這裏寫圖片描述
這種是awk+action的實例
3 nl /etc/passwd | awk -F ‘:’ ‘{print 1"\t" 7}’
這裏寫圖片描述
4 還可以在行中添加列名shell名 以及添加最後一行
nl /etc/passwd | awk -F ‘:’ ‘BEGIN {print “name,shell”} {print 1"\t" 7} END {print “ScySky,/bin/bash”}’
這裏寫圖片描述
這裏寫圖片描述
先執行BEGING,然後讀取文件,讀入有/n換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,0, 1表示第一個域,$n表示第n個域,隨後開始執行模式所對應的動作action。接着開始讀入第二條記錄······直到所有的記錄都讀完,最後執行END操作。

這裏寫圖片描述
這種是pattern的使用示例,匹配了pattern(這裏是root)的行纔會執行action(沒有指定action,默認輸出每行的內容)。搜索支持正則表達式,

PS: 未完待續 。。。。。。

發佈了24 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章