一,什么是awk
awk是linux下的一個命令,他對其他命令的輸出,對文件的處理都十分強(qiáng)大,其實他更像一門編程語言,他可以自定義變量,有條件語句,有循環(huán),有數(shù)組,有正則,有函數(shù)等。他讀取輸出,或者文件的方式是一行,一行的讀,根據(jù)你給出的條件進(jìn)行查找,并在找出來的行中進(jìn)行操作,感覺他的設(shè)計思想,真的很簡單,但是結(jié)合實際情況,具體操作起來就沒有那么簡單了。他有三種形勢,awk,gawk,nawk,平時所說的awk其實就是gawk。
二,awk中的記錄,域,分割符
當(dāng)我們讀取輸出時,或者讀取文件時,讀取一行就是一個記錄。記錄分割符是默認(rèn)是回車符,保存在RS,ORS中。
我們從記錄中分割出我們要單詞,或者是詞組等,我們稱他為域,域分割符,默認(rèn)的是空格和TAB銉,保存在內(nèi)建變
量ORS中。舉個例子:
aaaa:bbbb:ccccccc
1111:2343:5t43343
上面有二行,這二行就是二個記錄,每行后面的回車呢,就是記錄分割符,里面冒號呢,就是域分割符,分割出來的,aaaa,1111這類東西就是域了。
awk -F: '{print $1}' testfile
三,awk的內(nèi)建變量和運(yùn)算符
1,變量
| 變 量 | 描述 |
|---|---|
| $n | 當(dāng)前記錄的第n個字段,字段間由 FS分隔。 |
| $0 | 完整的輸入記錄。 |
| ARGC | 命 令行參數(shù)的數(shù)目。 |
| ARGIND | 命令行中當(dāng)前文件的位置(從0開始算)。 |
| ARGV | 包 含命令行參數(shù)的數(shù)組。 |
| CONVFMT | 數(shù)字轉(zhuǎn)換格式(默認(rèn)值為%.6g) |
| ENVIRON | 環(huán) 境變量關(guān)聯(lián)數(shù)組。 |
| ERRNO | 最后一個系統(tǒng)錯誤的描述。 |
| FIELDWIDTHS | 字 段寬度列表(用空格鍵分隔)。 |
| FILENAME | 當(dāng)前文件名。 |
| FNR | 同 NR,但相對于當(dāng)前文件。 |
| FS | 字段分隔符(默認(rèn)是任何空格)。 |
| IGNORECASE | 如 果為真,則進(jìn)行忽略大小寫的匹配。 |
| NF | 當(dāng)前記錄中的字段數(shù)。 |
| NR | 當(dāng) 前記錄數(shù)。 |
| OFMT | 數(shù)字的輸出格式(默認(rèn)值是%.6g)。 |
| OFS | 輸 出字段分隔符(默認(rèn)值是一個空格)。 |
| ORS | 輸出記錄分隔符(默認(rèn)值是一個換行符)。 |
| RLENGTH | 由 match函數(shù)所匹配的字符串的長度。 |
| RS
學(xué)習(xí)交流
熱門圖片
猜你喜歡的新聞
新聞熱點 2019-10-23 09:17:05
2019-10-21 09:20:02
2019-10-21 09:00:12
2019-09-26 08:57:12
2019-09-25 08:46:36
2019-09-25 08:15:43
疑難解答 |