首頁  >  文章  >  後端開發  >  axialisiconworkshop awk簡介與學習筆記收集第1/3頁

axialisiconworkshop awk簡介與學習筆記收集第1/3頁

WBOY
WBOY原創
2016-07-29 08:38:00973瀏覽

Copyright © 2004 本文遵從GPL協議,歡迎轉載、修改、散佈。
第一次發佈時間:2004年8月6日
-------------------------------- ------------------------------------------------
Table of Contents
1. awk簡介
2. awk指令格式與選項
2.1. awk的語法有兩種形式
2.2. 指令選項
3. 模式與操作
2.2. 指令選項
3. 模式與運算>3.1. 模式
3.2. 操作
4. awk的環境變數
5. awk運算子
6. 記錄與領域
6.1. 記錄
6. 記錄與領域
6.1. 記錄
6.2. 6.3. 域分隔符號
7. gawk專用正規表示式元字元
8. POSIX字元集
9. 匹配運算子(~)
10. 比較表達式
111. 範圍範本
12. 一個驗證passwd檔案效能的範例
13. 幾個實例
14. awk程式設計
14.1. 變數
14.2. BEGIN模組
14.3. 🎜>14.4. 重定向與管道
14.5. 條件語句
14.6. 循環
14.7. 數組
14.8. awk的內建函數
15. awk簡介
awk是一種程式語言,用於在linux/unix下對文字和資料進行處理。資料可以來自標準輸入、一個或多個文件,或其它命令的輸出。它支援用戶自訂函數和動態正規表示式等先進功能,是linux/unix下的強大程式設計工具。它在命令列中使用,但更多是作為腳本來使用。 awk的處理文字和資料的方式是這樣的,它逐行掃描文件,從第一行到最後一行,尋找匹配的特定模式的行,並在這些行上進行你想要的操作。如果沒有指定處理動作,則把符合的行顯示到標準輸出(螢幕),如果沒有指定模式,則所有被操作所指定的行都被處理。 awk分別代表其作者姓氏的第一個字母。因為它的作者是三個人,分別是Alfred Aho、Brian Kernighan、Peter Weinberger。 gawk是awk的GNU版本,它提供了Bell實驗室和GNU的一些擴充。以下介紹的awk是以GUN的gawk為例的,在linux系統中已把awk連結到gawk,所以下面全部以awk介紹。
2. awk命令格式和選項
2.1. awk的語法有兩種形式
awk [options] 'script' var=value file(s)
awk [options] -f scriptfile var =value file(s)
2.2. 指令選項
-F fs or --field-separator fs
指定輸入檔案折分隔符,fs是一個字串或是一個正規表示式,如- F:。
-v var=value or --asign var=value
賦值一個使用者定義變數。
-f scripfile or --file scriptfile
從腳本檔案讀取awk指令。
-mf nnn and -mr nnn
對nnn值設定內在限制,-mf選項限制分配給nnn的最大區塊數;-mr選項限制記錄的最大數目。這兩個功能是Bell實驗室版awk的擴充功能,在標準awk中不適用。
-W compact or --compat, -W traditional or --traditional
在相容模式下運作awk。所以gawk的行為和標準的awk完全一樣,所有的awk擴充都被忽略。
-W copyleft or --copyleft, -W copyright or --copyright
印製簡短的著作權資訊。
-W help or --help, -W usage or --usage
列印全部awk選項和每個選項的簡短說明。
-W lint or --lint
列印不能移植傳統unix平台的結構的警告。
-W lint-old or --lint-old
列印關於不能移植傳統unix平台的結構的警告。
-W posix
開啟相容模式。但有以下限制,不識別:x、函數關鍵字、func、換碼序列以及當fs是一個空格時,將新行作為一個域分隔符;操作符**和**=不能代替^和^= ;fflush無效。
-W re-interval or --re-inerval
允許間隔正規表示式的使用,參考(grep中的Posix字元類別),如括號表達式[[:alpha:]]。
-W source program-text or --source program-text
使用program-text作為原始碼,可與-f命令混用。
-W version or --version
列印bug報告資訊的版本。
3. 模式和操作
awk腳本是由模式和操作組成的:
pattern {action} 如$ awk '/root/' test,或$ awk '$3 兩者是可選的,如果沒有模式,則action會套用到全部記錄,如果沒有action,則輸出匹配全部記錄。預設情況下,每個輸入行都是一筆記錄,但使用者可透過RS變數指定不同的分隔符號來分隔。 
3.1. 模式
模式可以是下列任一:
/正規表示式/:使用萬用字元的擴充集。
關係式表達式:可以用下面運算子表中的關係運算子來操作,可以是字串或數字的比較,如$2>%1選擇第二個欄位比第一個欄位長的行。
模式匹配表達式:用運算子~(匹配)和~!(不符)。
模式,模式:指定一行的範圍。此語法不能包括BEGIN和END模式。
BEGIN:讓使用者指定在第一筆輸入記錄被處理之前所發生的動作,通常可在此設定全域變數。
END:讓使用者在最後一筆輸入記錄被讀取之後發生的動作。
3.2. 運算
運算由一人或多個指令、函數、表達式組成,之間由換行符號或分號隔開,並位於大括號內。主要有四部:
變數或陣列賦值
輸出指令
內建函數
控制流程指令
4. awk的環境變數
Table 1. awk的環境變數
變數 描述 
$n 目前記錄的第n個字段,字段間由FS分隔。 
$0 完整的輸入記錄。 
ARGC 命令列參數的數目。 
ARGIND 命令列中目前文件的位置(從0開始算)。 
ARGV 包含命令列參數的陣列。 
CONVFMT 數字轉換格式(預設值為%.6g) 
ENVIRON 環境變數關聯陣列。 
ERRNO 最後一個系統錯誤的描述。 
FIELDWIDTHS 字段寬度清單(以空白鍵分隔)。 
FILENAME 目前檔案名稱。 
FNR 同NR,但相對於目前文件。 
FS 欄位分隔符號(預設為任何空格)。 
IGNORECASE 如果為真,則進行忽略大小寫的匹配。 
NF 目前記錄中的欄位數。 
NR 目前記錄數。 
OFMT 數字的輸出格式(預設值是%.6g)。 
OFS 輸出欄位分隔符號(預設值是一個空格)。 
ORS 輸出記錄分隔符號(預設值是一個換行符號)。 
RLENGTH 由match函數所符合的字串的長度。 
RS 記錄分隔符號(預設是一個換行符號)。 
RSTART 由match函數所符合的字串的第一個位置。 
SUBSEP 數組下標分隔符號(預設值是
以上就介紹了axialisiconworkshop awk簡介與學習筆記收集第1/3頁,包括了axialisiconworkshop方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn