AWK快速入門

2021-08-09 00:24:57 字數 2109 閱讀 1149

建立乙個檔名為emp.data的檔案,用vim編輯如下內容

beth 4.00 0

dan 3.75 0

kathy 4.00 10

mark 5.00 20

mary 5.50 22

susie 4.25 18

每列分別為名字,時薪,工時。

如果想列印每個雇員的名字和他們的薪酬

[~]awk '

$3>

0' emp.data

kathy

40mark

100mary

121susie

76.5

這個命令會告訴作業系統執行awk程式,被執行的程式用單引號包圍,從輸入檔案emp.data獲取資料。被單引號包圍的部分是乙個完整是awk程式,它由乙個單獨的模式-動作語句(pattern-action)組成。模式$3>0匹配每一行輸入,如果該行的第三列(或者說字段(filed)大於0),則動作

顯示第1列名字及第2列和第3列的乘積。

如果你想看哪個員工在偷懶,可以執行awk程式awk'$3==0 print' emp.data

awk的模式與動作可以省略其一,但不能兩者都省略,如果乙個模式沒有動作,例如:

awk '$3==0' emp.data

會將每乙個匹配行列印出來。這個程式將我呢件emp.data中第3個字段為0的兩行列印出來:

beth     4.00     0

dan 3.75 0

如果只有動作沒有模式,例如

awk '' emp.data

beth

dankathy

mark

mary

susie

對於每乙個輸入行,動作(這個例子裡是列印第乙個字段)都會被執行。

因為模式和動作都是可選的所以用花括號將動作括起來,以便區分兩者。

執行awk程式有多種方式,舉幾個例子:

awk 『program』 inputfile

這個命令對指定的輸入檔案的每一行,執行program.

ex:

awk '$3==0 ' file1 file2

列印檔案file1和file2de 每一行的第乙個字段(條件是該行的第3個字段為0)

另外你也可以在命令列上省略輸入檔案,

awk '$3==0 '這種情況下,awk會將program應用到你接下來在終端輸入的內容上面,知道你鍵入乙個檔案結束標誌(unix系統組合鍵control-d)

ex:

awk

'$3==0 '

beth 4.00

0beth

這種行為對測試awk程式來說非常方便:鍵入程式與資料,檢查程式的輸出。

當程式的長度比較短時(只有幾行)嗎,這種安排會比較方便。如果程式比較長,更好的做法是將它們放在乙個單獨的檔案中,如果檔案名師profile的話,執行時只要鍵入

awk -f profileoptionallist of files

選項-f告訴awk從檔案中提取程式,在profile出現的地方可以是任意的檔名。

如果你在awk程式犯了乙個錯誤,awk會顯示乙個診斷資訊。例如,你打錯了乙個花括號,就像這樣

awk '$3==0 [print $1 }' emp.data

錯誤告警如下:

」syntax error」意味著你犯了乙個語法錯誤,錯誤的地方會備用》 《標記。「bailing out」意味著無法修復。

由於發生了語法錯誤,awk不會嘗試執行這個程式,然後有寫錯誤知道執行時才會被檢測到。例如,你的程式嘗試用0作除數,這時候awk會停止處理,然後報告錯誤所在位置。

Awk 入門筆記

在專案中需要寫shell從日誌檔案中獲取訪問記錄,用到了awk資料處理工具。特做一下中結。awk處理每行資料的時候預設是採用空格或者tab隔開的,將每行資料拆分為每一列。每一列都有預設的標示,1 2 其中0標 示一整行 還有幾 個比較常 用到的內 置變數如 下,在使 用的時候 不需要使 用 符號。n...

awk入門了解

1.什麼是awk awk是一種程式語言,主要用來處理資料和產生報表,它對輸入資料 檔案 標準輸入或命令的輸出 逐行進行掃瞄,匹配指定的模式,並執行指定的操作。2.awk語法格式 awk pattern filename awk掃瞄filename中的每一行,對符合模式pattern的行執行操作act...

awk f 分隔符 命令 awk 命令快速入門

awk 是乙個強大的文字分析工具,可以非常方便地處理每行都是相同格式的文字,是linux中功能強大的資料處理引擎之一。演算法集市 grep命令快速入門 zhuanlan.zhihu.com 演算法集市 sed 命令快速入門 zhuanlan.zhihu.com 前面兩篇分別示例了 grep sed ...