文本處理工具AWK

AWK工做原理正則表達式

1.awk使用行做爲輸入,並將這一行賦給內部變量 $0 每⼀行也可稱爲一個記錄,以換行符結束。dom

2.awk進行字段分解,每一個字段存儲在已編號的變量中,從 $1 開始ide

3.awk默認狀況下的分隔符是空格, 是由內部變量 FS 來肯定字段分隔符。初始 FS 爲空格函數

4.awk打印字段,將以設置的方法使用 print 函數打印spa

5.awk在打印的字段間加上空格,由於 $1,$3 之間有一個逗號。逗號它映射爲另外一個內部變量,稱爲輸出字段分隔符 OFS 默認爲空格it

6.awk輸出以後,將從文件中獲取另⼀行,並將其存儲在 $0 中,覆蓋原來的內容,而後將新的字符串分隔成字段並進行處理。該過程將持續到全部行處理完畢class


AWK用法awk


一、使用AWK匹配關鍵字
變量

  awk '/關鍵字或正則表達式/' filename        原理

 [root@localhost ~]# awk '/[al1]/' /etc/hosts              輸出含有a或l或1的行

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

awk '//' filename           會輸出全部的行

二、使用AWK進行print動做

awk -F ':' '{print $1}' filename

[root@localhost ~]# awk -F ':' '{print $1}' /etc/passwd        以:爲字段分隔符,輸出第一個字段


三、使用AWK執行匹配+print動做

awk -F ':' '/root/ {print $1,$3}' /etc/passwd         在文件中匹配含有root的行,並打印第一和第三個字段


AWK內部變量

NR行號

[root@Shell ~]# awk '{print NR,$0}' /etc/passwd                       #打印整個文本的行號

[root@Shell ~]# awk 'NR<=3' /etc/passwd                               #打印文件的前三行

NF最後一行

[root@localhost ~]# awk -F ':' '{print $NF}' /etc/passwd           #打印每行的最後一個字段


FS 指定字段分割符,默認空格

OFS 輸出字段分隔符

[root@localhost ~]# awk 'BEGIN{FS=":";OFS="+++"} /^root/ {print $1,$2}' /etc/passwd       #指定分隔符爲:並用+++隔開輸出的字段

root+++x


RS 輸入記錄分隔符,默認爲換行符

[root@Shell ~]# awk -F: 'BEGIN{RS=" "} {print $0}' /etc/hosts


未完待續!!!

相關文章
相關標籤/搜索