- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
歡迎來到藍隊云技術小課堂,每天分享一個技術小知識。
# 用法
awk 'awk_program' a.txt
語法解析:
a.txt 是awk要讀取的文件,可以是0個文件、一個文件或者多個文件;如果給定0個文件,則標識從標準輸入中讀取
單引號包圍的是awk代碼,也稱為awk程序;盡量使用單引號,因為在awk程序中經常使用$符號,而$符號在shell中是變量符號,如果使用雙引號,則$符號會被shell解析為shell變量,然后進行變量替換;使用單引號,會讓$符號留給awk去解析
awk程序中,大量使用大括號,大括號表示代碼塊,代碼塊中間可以直接連用,代碼塊內部的多個語句使用分號";"隔開
# 范例
# 輸出a.txt中的每一行
awk '{print $0}' a.txt
# 多個代碼塊,代碼塊中多個語句
# 輸出每行之后還輸出兩行:hello行和world行
awk '{print $0}{print "hello";print "world"}' a.txt
對于awk '{print $0}' a.txt
,它類似于shell的while循環while read line;do echo "$line";done <a.txt
。awk隱藏了讀取每一行的while循環,它會自動讀取每一行,其中的{print $0}
對應于Shell的while循環體echo "$line"
部分。
下面再分析該awk命令的執行過程:
讀取文件第一行(awk默認按行讀取文件)
將所讀取的行賦值給awk的變量$0
,于是$0
中保存的就是本次所讀取的行數據
進入代碼塊{print $0}
并執行其中代碼print $0
,即輸出$0
,也即輸出當前所讀取的行
執行完本次代碼之后,進入下一輪awk循環:繼續讀取下一行(第二行)
將第二行賦值給變量$0
進入代碼塊執行print $0
執行完代碼塊后再次進入下一輪awk循環,即讀取第三行,然后賦值給$0
,再執行代碼塊
…不斷循環,直到讀完文件所有數據…
退出awk
藍隊云官網上擁有完善的技術支持庫可供參考,大家可自行查閱,更多技術問題,可以直接咨詢。同時,藍隊云整理了運維必備的工具包免費分享給大家使用,需要的朋友可以直接咨詢。
更多技術知識,藍隊云期待與你一起探索。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP