awk 語法深刻淺出(一)

awk 語法深刻淺出(一)

在詳細闡述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

1 從文件輸入

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

2 從命令輸入

能夠將一條或多條Linux命令的輸出經過管道發給awk處理。格式以下:

$ command | awk 'pattern'
$ command | awk '{action}'
$ command | awk 'pattern {action}'

範例:當文件employees中的某一行含有模式Sally時,awk打印該行的頭第一個字段。

$ cat employees | awk '/Sally/{print $1}'
Sally Chang
相關文章
相關標籤/搜索