- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
1.awk是一個非常棒的數據處理工具,sed常常用于一個整行的處理,而awk則比較傾向于一行中分成數段的數據處理,通常的模式是這樣的:
awk ‘條件類型{動作1} 條件類型2{動作2} ....’ filename
2.cat /etc/passwd | awk -F : ‘{print $1 “ ” $4 “ ” $5}’
從以上截圖看出用參數-F指定域分隔符,然后打印出/etc/passwd文件的第1列、第4列、第5列,并且每列用tab隔開
-F 表示指定分隔符,默認的是空格,如果有文檔中有空格那么不需要用這個參數,相當于”cut -d “:” -d 1”命令;
“ ”表示tab鍵;
在每個動作完成之后都會執行 另起一行;
3.cat /etc/passwd | awk -F : ‘BEGIN {print “name” “ ” “shell”} {print $1 “ ” $7} END {print “end” “ ” “end”}’
awk工作流程是這樣的:先執行BEGING,然后讀取文件,讀入有/n換行符分割的一條記錄,然后將記錄按指定的域分隔符劃分域,填充域,$0則表示所有域,$1表示第一個域,$n表示第n個域,隨后開始執行模式所對應的動作action。接著開始讀入第二條記錄······直到所有的記錄都讀完,最后執行END操作。
3.awk ‘/nginx/’ /etc/passwd
此時的awk命令就相當于grep nginx /etc/passwd命令
4.df -h | awk ‘$4>20’ 打印第四列數字大于20的行
5.awk幾個內建變量
(1)NF 每一行($x)擁有的欄位總數
(2)NR 目前awk所處理的是第幾行數據
(3)FS 目前的分隔字節,默認的是空白鍵
例如:cat /etc/passwd | awk -F ":" {print $1 " " $7 " lines:" NR " columns:" NF}
提交成功!非常感謝您的反饋,我們會繼續努力做到更好!
這條文檔是否有幫助解決問題?
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP