awk 命令使用


awk命令就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理。例如:

awk -F '/' '{print $NF}' tmp/file.txt

該命令用於讀取file.txt文件中的內容,讀取到的每行內容按'/'分隔符分割后並打印最后一個詞,如讀取到lib/xxx.txt內容將會打印出xxx.txt

awk命令語法:
awk [-F|-f|-v] 'BEGIN{} //{command1; command2} END{}' file
 [-F|-f|-v]   大參數,-F指定分隔符,-f調用腳本,-v定義變量 var=value
'  '          引用代碼塊
BEGIN   初始化代碼塊,在對每一行進行處理之前,初始化代碼,主要是引用全局變量,設置FS分隔符
//           匹配代碼塊,可以是字符串或正則表達式
{}           命令代碼塊,包含一條或多條命令
;          多條命令使用分號分隔
END      結尾代碼塊,在對每一行進行處理之后再執行的代碼塊,主要是進行最終計算或輸出結尾摘要信息

1、print命令是awk打印指定內容的主要命令:

示例:讀取tmp目錄下的file.txt

awk '{print}' tmp/file.txt 

2、F指定分隔符讀取

awk -F '/' '{print $1}' tmp/file.txt

按分隔符分割后打印第一個詞

awk -F '/' '{print $NF}' tmp/file.txt

按分隔符分割后打印最后一個詞

awk -F '/' '{print $(NF-1)}' tmp/file.txt

按分隔符分割后打印倒數第二個詞

附注:

  • $0           表示整個當前行
  • $1           每行第一個字段
  • NF          字段數量變量
  • NR          每行的記錄號,多文件記錄遞增
  • FNR        與NR類似,不過多文件記錄不遞增,每個文件都從1開始
  • \t            制表符
  • \n           換行符
  • FS          BEGIN時定義分隔符
  • RS       輸入的記錄分隔符, 默認為換行符(即文本是按一行一行輸入)
  • ~            匹配,與==相比不是精確比較
  • !~           不匹配,不精確比較
  • ==         等於,必須全部相等,精確比較
  • !=           不等於,精確比較
  • &&      邏輯與
  • ||             邏輯或
  • +            匹配時表示1個或1個以上
  • /[0-9][0-9]+/   兩個或兩個以上數字
  • /[0-9][0-9]*/    一個或一個以上數字
  • FILENAME 文件名
  • OFS      輸出字段分隔符, 默認也是空格,可以改為制表符等
  • ORS        輸出的記錄分隔符,默認為換行符,即處理結果也是一行一行輸出到屏幕
  • -F'[:#/]'   定義三個分隔符

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM