gawk是awk的GNU版本,采用編程語言的形式
gawk命令格式
gawk options program file
選項(xiàng)
-F fs 指定用于分隔行中數(shù)據(jù)段的文件分隔符
-f file 讀取程序文件名
-v var=value 定義變量及默認(rèn)值
-mf N 指定處理數(shù)據(jù)文件中最大字段數(shù)
-mr N 指定數(shù)據(jù)文件最大記錄數(shù)
-w keyword 指定兼容模式或警告等級
使用gawk
可以直接在命令行或shell腳本中使用gawk
從命令行上讀取程序腳本
單引號和花括號包住
例子:gawk '{print $1}'
在程序腳本中使用多條命令
在每個(gè)命令之間放一個(gè)分號
從文件中讀取
-f file
處理數(shù)據(jù)前運(yùn)行腳本
BEGIN. 先執(zhí)行BEGIN后面指定的程序腳本再讀取數(shù)據(jù)
處理數(shù)據(jù)后運(yùn)行腳本
END
gawk變量
1.內(nèi)建變量
記錄是一行數(shù)據(jù);數(shù)據(jù)字段是運(yùn)行中獨(dú)立的數(shù)據(jù)元素默認(rèn)空白字符分隔
$0 整條記錄
$1 第一個(gè)數(shù)據(jù)字段
$n 第n個(gè)數(shù)據(jù)字段
FIELDWIDTHS 定義了每個(gè)字段具體寬度
FS 輸入字段分隔符
RS 輸入記錄分隔符
OFS 輸出字段分隔符
ORS 輸出記錄分隔符
更多內(nèi)建變量
ARGC 當(dāng)前命令行參數(shù)個(gè)數(shù)
ARGIND 當(dāng)前文件在ARGV中的索引
ARGV 包含命令行參數(shù)的數(shù)組
CONVFMT 數(shù)字轉(zhuǎn)換格式,默認(rèn)%.6
ENVIRON 由當(dāng)前shell環(huán)境變量及值組成的關(guān)聯(lián)數(shù)組
ERRNO 系統(tǒng)錯(cuò)誤號
FILENAME 輸入文件名
FNR 當(dāng)前數(shù)據(jù)文件記錄數(shù)
IGNORECASE 設(shè)成非零時(shí),忽略大小寫
NF 字段總數(shù)
NR 已處理的記錄數(shù)
OFMT 數(shù)字輸出格式
RLENGTH 由match函數(shù)匹配的子串長度
RSTART 由match函數(shù)匹配的子串起始位置
gawk程序特性
1.正則表達(dá)式
必須出現(xiàn)在它作用的程序代碼的左花括號之前
2.匹配操作符
~ 允許將正則表達(dá)式限定在特定的字段上
3.數(shù)學(xué)表達(dá)式
4.結(jié)構(gòu)化命令
類似C語言
if (condition) statement1; else statement2
while (conditon) {
statement
}
do {
statement
} while (conditon)
for (variable assignment; condition; iteration process) {}