linux運維開發(三)----------三劍客之awk

awk的使用場景?

awk是行處理器,相比較屏幕處理信息的優點在於不會由於文件過大而出現內存溢出和處理緩慢的問題,通常用於格式化信息。

awk的組成部分

awk -F/f/v ‘BEGIN{} 匹配代碼段 {輸出代碼段} ORS="\n" OFS=" " END{}’ filename

  • -F:-F可以用來指定輸入的字段分隔符,常用方法有:-F:和-F’[:# ]’
  • -f用來指定腳本文件
  • -v用來聲明變量
  • BEGIN代碼塊是在對信息進行處理之前,初始化代碼。主要完成以下幾件事:
    • RS:指定輸入記錄分隔符
    • FS:指定輸入字段分隔符,和-F同理
    • 聲明變量
  • 匹配代碼塊(可以使用正則表達式匹配):
    • //:純字符匹配,例如/mail/匹配包含mail的行,/^d/匹配以數據開頭的行,/[0-9]+/匹配包含數字的行,/[a-z]/匹配包含字母的行,/bash$/匹配以bash結尾的行
    • !//:純字符不匹配,同//
    • ~//:字段值匹配,例如$1 ~/mail/匹配第一個字段爲mail的行
    • !~//:字段值不匹配,同上
    • /a|b/:匹配a或b記錄,例如/mail|mysql/匹配包含mail或者mysql的行
    • /a/,/b/:匹配a到b區間的記錄,例如/mail/,/mysql/匹配從mail到mysql行的區間
  • 輸出代碼塊:
    • print:輸出信息
    • $0:打印記錄信息
    • $1:打印第一個字段
    • NF:每個記錄的字段數量
    • NR:每個記錄的行號,多個文件遞增
    • FNR:每個記錄的行號,每個文件從1開始
    • if else:判斷條件用()包含起來,執行語句用{}包含起來
  • ORS:指定輸出的記錄分隔符
  • OFS:指定輸出的字段分隔符
  • END代碼塊是在對記錄處理完以後執行,主要進行最終計算和獲得概要信息

更多問題可以加公衆號:代碼小棧,期待爲您解決更多問題

代碼小棧

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