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’換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,
2 nl /etc/passwd | awk -F ‘:’ ‘{print 1}’
這種是awk+action的實例
3 nl /etc/passwd | awk -F ‘:’ ‘{print
4 還可以在行中添加列名shell名 以及添加最後一行
nl /etc/passwd | awk -F ‘:’ ‘BEGIN {print “name,shell”} {print
先執行BEGING,然後讀取文件,讀入有/n換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,
這種是pattern的使用示例,匹配了pattern(這裏是root)的行纔會執行action(沒有指定action,默認輸出每行的內容)。搜索支持正則表達式,
PS: 未完待續 。。。。。。