在詳細闡述awk命令以前,咱們首先了解一下awk是如何完成本身的任務的,咱們將以一個名爲names(僅有三行記錄)的文件爲例進行說明。正則表達式
張三 Savage 100 李二 Lee 200 王五 Doe 300
使用下面的awk命令:awk打印字段時,將如下面方式使用print函數函數
$ awk '{print $1,$3}' names
1 .awk使用一行做爲輸入(經過文件或者管道),並將這一行賦給內部變量$0 ,默認時每一行也能夠稱爲一個記錄,以換行符結束。code
張三 100 李二 200 王五 300
awk 指令由模式、操做、或模式與操做的組合組成。io
模式是由某種類型的表達式組成的語句。若是某個表達式中沒有出現關鍵字if,但實際計算時卻暗含if這個詞,那麼,這個表達式就是模式。操做由括在大括號內的一條或多條語句組成,語句之間用分號或換行符隔開,模式則不能被括在大括號中,模式由括在兩個正斜槓之間的正則表達式、一個或多個awk 操做符組成的表達式組成。awk
awk的格式以下($是Linux命令的提示符):變量
$ awk 'pattern' filename $ awk '{action}' fi1ename $ awk 'pattern {action}' fi1ename
下面演示一個名爲employees的文件。file
$ cat employees Tom Jones 4424 5/12/66 543354 Mary Adams 5346 11/4/63 28765 Sally Chang 1654 7/22/54 650000 Billy B1ack 1683 9/23/44 336500
awk 打印出全部包含模式Mary的行。語法
$ awk '/Mary/' employees Mary Adams 5346 11/4/63 28765
awk打印出文件employees的第一個字段,字段從行的左端開始,以空白符分隔。command
$ awk '{print $1}' employees Tom Mary Sally Billy
awk打印出文件employees的第一個字段,字段從行的左端開始,以空白符分隔。文件
$ awk '/Sally/{print $1,$2}' employees Sally Chang
能夠將一條或多條Linux命令的輸出經過管道發給awk處理。格式以下:
$ command | awk 'pattern' $ command | awk '{action}' $ command | awk 'pattern {action}'
範例:當文件employees中的某一行含有模式Sally時,awk打印該行的頭第一個字段。
$ cat employees | awk '/Sally/{print $1}' Sally Chang