總結一下,awk的相關功能:
awk '{print $0}'
在 Awk 中,變量 $0
表示整個當前行,因此
print
和 print $0
的作用完全相同
awk -F":" '{print $1 " " $3}' /etc/passwd
-F : 參數指定行的內容用的分隔符,如上,使用的是 : 號做的分割處理
比如:
awk -F":" '{print "username:" $1 "\t\tuid:" $3}' /etc/passwd
顯示爲:
username:root uid:0 username:daemon uid:1 username:bin uid:2 username:sys uid:3 username:sync uid:4 username:games uid:5
BEGIN和END
awk允許在執行文本文件之前,執行相應的初始化代碼,同樣,awk 也支持在文件處理完成以後執行相應的代碼,這個可以用定義END專用代碼塊來做到(通常情況下,END 塊用於進行最終計算或打印應該在輸出流結尾處出現的彙總信息)。
正則表達式的查找
比如,需要查找包含有 "hp"這個詞的行;
awk '/hp/ {print}' /etc/passwd
顯示的結果爲:
hplip:x:112:7:HPLIP system user,,,:/var/run/hplip:/bin/false
表達式代碼塊
尋找以":"分隔,第一列爲"ivanzhangwb"的行:
awk -F":" '$1 =="ivanzhangwb" {print}' /etc/passwd
結果顯示爲:
ivanzhangwb@ivanzhangwb-notebook:~$ awk -F":" '$1 =="ivanzhangwb" {print}' /etc/passwd ivanzhangwb:x:1000:1000:ivanzhangwb,,,:/home/ivanzhangwb:/bin/bash
條件語句
awk -F":" '{if($1=="ivanzhangwb"){print}}' /etc/passwd
特殊變量
NF: 字段數量
打印出每行的字段數量爲多少.
awk '{print NF}' /etc/passwd
RS變量 和 OPS 變量.
RS
變量告訴 awk 當前記錄什麼時候結束,新記錄什麼時候開始。
OFS 變量表示每個字符串之間打印的間隔符號.