文本處理工具AWK

AWK工作原理

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

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

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

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

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

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


AWK用法


1、使用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           會輸出所有的行

2、使用AWK進行print動作

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

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


3、使用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


未完待續!!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章