Windows上GAWK的使用 一

2021-09-01 21:24:50 字數 1151 閱讀 4825

現在經常要處理到一些日誌資料,對這些資料進行分析處理,但首先要對日誌資料進行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...