gawk內建環境變數:
變數 描述
$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 陣列下標分隔符(預設值是\034)。
gawk運算子
table 2. 運算子
運算子 描述
= += -= *= /= %= ^= **= 賦值
?: c條件表示式
|| 邏輯或
&& 邏輯與
~ ~! 匹配正規表示式和不匹配正規表示式
< <= > >= != == 關係運算子
空格 連線
+ - 加,減
* / & 乘,除與求餘
+ - ! 一元加,減和邏輯非
^ *** 求冪
++ -- 增加或減少,作為字首或字尾
$ 字段引用
in 陣列成員
6. 記錄和域
6.1. 記錄
gawk把每乙個以換行符結束的行稱為乙個記錄。
記錄分隔符:預設的輸入和輸出的分隔符都是回車,儲存在內建變數ors和rs中。
$0變數:它指的是整條記錄。如 gawk..exe 「」 test.txt將輸出test檔案中的所有記錄。
變數nr:乙個計數器,每處理完一條記錄,nr的值就增加1。如 gawk.exe 「」 test.txt將輸出test檔案中所有記錄,並在記錄前顯示記錄號。
6.2. 域
記錄中每個單詞稱做「域」,預設情況下以空格或tab分隔。gawk可跟蹤域的個數,並在內建變數nf中儲存該值。如 gawk 「」 test.txt將列印test檔案中第一和第三個以空格分開的列(域)。
6.3. 域分隔符
內建變數fs儲存輸入域分隔符的值,預設是空格或tab。我們可以通過-f命令列選項修改fs的值。如 gawk.exe –f」:」 「」 test.txt將列印以冒號為分隔符的第一,第五列的內容。
可以同時使用多個域分隔符,這時應該把分隔符寫成放到方括號中,如gawk.exe –f」[:\t]」 「'」 test.exe,表示以空格、冒號和tab作為分隔符。
輸出域的分隔符預設是乙個空格,儲存在ofs中。如gawk.exe –f」:」 「」 test.exe,$1和$5間的逗號就是ofs的值。
7. gawk專用正規表示式元字元
一般通用的元字符集就不講了,可參考我的sed和grep學習筆記。以下幾個是gawk專用的,不適合unix版本的gawk。
\y匹配乙個單詞開頭或者末尾的空字串。
\b匹配單詞內的空字串。
\<
匹配乙個單詞的開頭的空字串,錨定開始。
\>
匹配乙個單詞的末尾的空字串,錨定末尾。
\w匹配乙個字母數字組成的單詞。
\w匹配乙個非字母數字組成的單詞。
\『匹配字串開頭的乙個空字串。
\'匹配字串末尾的乙個空字串。
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...
Windows上GAWK的使用 一
現在經常要處理到一些日誌資料,對這些資料進行分析處理,但首先要對日誌資料進行etl處理,如果簡單的資料格式處理,使用gawk是最理想不過了,下面我們就介紹如何使用gawk,對資料進行e extract 處理。二.gawk的基本語法.1.gawk格式.gawk options begin patter...