awk語言的最基本功能:在文本或字符串中給予指定規則浏覽和抽取信息。
awk抽取信息後,才能進行其他文本操作,完整的awk腳本通常用來格式化文本中的信息。
三種調用awk的命令方式:
1.命令行方式:awk [-F field-separator] 'commands' input-file(s)
-F選項可選:awk -F: 'commands' input-file
2.將所有的awk命令插入一個文件,並是awk程序可執行,然後用awk命令解釋器作為腳本的首行,
以便通過鍵入腳本名稱來調用它。
3.將所有的awk命令插入一個單獨文件,然後調用:
awk -f awk-script-file input-files(s)
-f:指明在文件awk-script-file中的awk腳本
input-file(s):使用awk進行浏覽的文件名。
awk腳本
在命令中調用awk時,awk腳本由各種操作和模式組成。
-F,awk每次讀一條記錄或一行,並使用指定的分隔符分分隔指定域;
所沒分隔符,則使用空格。
任何awk語句都由模式和動作組成
模式,決定動作語句何時觸發及觸發事件,若忽略模式部分,動作將時刻保持執行狀態。
模式,可是任何條件語句,或符合語句,或正則表達式。
BEGIN:設置計數,打印頭,在任何文本浏覽動作之前;
END:用來在awk完成文件浏覽動作後打印輸出文件總數和結尾狀態標志。
動作,在{}內指定;大多用來打印;裡面可包含:if,looping,循環推出結構;
若不指明采取動作,awk將打印所有浏覽出來的記錄。
例子:
cat > grade.txt
M.Tansley 05/99 48311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
P.Bunny 02/99 48 Yello 12 35 28
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28
將awk輸出的數據保存起來:
1.awk '{print $0}' grade.txt > wow
pg wow
stuname indate seqno level age gnow gmax
M.Tansley 05/99 48311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
P.Bunny 02/99 48 Yello 12 35 28
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28
2.使用tee命令,保存並且輸出保存的數據到屏幕
[開發]/usr/b4nx/ytcclb>awk '{print $0}' grade.txt | tee delete_me_and_die
stuname indate seqno level age gnow gmax
M.Tansley 05/99 48311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
P.Bunny 02/99 48 Yello 12 35 28
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28
[開發]/usr/b4nx/ytcclb>pg delete_me_and_die
stuname indate seqno level age gnow gmax
M.Tansley 05/99 48311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
P.Bunny 02/99 48 Yello 12 35 28
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28
打印所有數據
awk '{print $0}' grade.txt
M.Tansley 05/99 48311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
P.Bunny 02/99 48 Yello 12 35 28
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28