現在經常要處理到一些日誌資料,對這些資料進行分析處理,但首先要對日誌資料進行etl處理,如果簡單的資料格式處理,使用gawk是最理想不過了,下面我們就介紹如何使用gawk,對資料進行e(extract)處理。
二.gawk的基本語法.
1.gawk格式.
gawk [options] "[begin{}][pattern][end{}]" inputfilename.
gawk逐行讀取inputfilename檔案的內容,將符合pattern規則的行,再按照action指定的操作來執行,pattern相當於是條件,action相當於是執行動作。其中用中括號括起來的部分不是必須寫的部分,接下來列舉乙個簡單的例子.
test.txt檔案中的內容如下:
1111;aaaa;aaaa;
2222;bbbb;bbbb;
3333;cccc;dddd;
在命令視窗執行:gawk.exe "" test.txt,則輸出以下內容:
1111;aaaa;aaaa;
2222;bbbb;bbbb;
3333;cccc;dddd;
""表示完整的輸出從test.txt檔案中讀取的每一行.$0表示當前讀取的行,從這裡我們應該知道gawk從test.txt讀取一行之後開始執行action塊的動作。為了驗證這點,下面再舉乙個例子:
gawk.exe "" test.txt 輸出如下:
test
test
test
由於test.txt檔案中有三行,所以action塊部分執行了三次.
如果想以分號作為分隔符可以將test.txt分成四列,只輸出前兩列:
gawk.exe -f"\73""" test.txt 注意這裡"\73"是分號的八進位制ascii碼。輸出如下:
1111 aaaa
2222 bbbb
3333 cccc
我們發現輸出的結果中每一列是用空格分隔的,現在我們自己定義分隔符,寫法如下:
gawk.exe-f"\73""begin" test.txt 輸出結果中每一列是用製表符來分割的,這裡面使用到了begin{}塊,和內建變數ofs,begin塊的作用就是在gawk開始讀取test.txt第一行之前要執行的部分,一般在begin塊裡面初始化變數,ofs是gawk內建變數,表示輸出列的分割符是什麼,這裡使用的是製表符.
Windows上GAWK的使用 二
gawk內建環境變數 變數 描述 n 當前記錄的第n個字段,欄位間由fs分隔。0 完整的輸入記錄。argc 命令列引數的數目。argind 命令列中當前檔案的位置 從0開始算 argv 包含命令列引數的陣列。convfmt 數字轉換格式 預設值為 6g environ 環境變數關聯陣列。errno ...
Windows上GAWK的使用 三
9.匹配操作符 用來在記錄或者域內匹配正規表示式。如gawk.exe 1 root test.txt將顯示test檔案第一列中以root開頭的行。10.比較表示式 conditional expression r1 expression r2 expression r3,例如 gawk.exe 1 ...
Windows上GAWK的使用 五
14.8.gawk的內建函式 14.8.1.字串函式 sub函式匹配記錄中最大 最靠左邊的子字串的正規表示式,並用替換字串替換這些字串。如果沒有指定目標字串就預設使用整 個記錄。替換只發生在第一次匹配的時候。格式如下 sub regular expression r,substitution str...