首頁  >  文章  >  php教程  >  AWK指令使用

AWK指令使用

高洛峰
高洛峰原創
2016-12-12 16:02:011383瀏覽

awk 最基本功能是在檔案或字串中基於指定規則瀏覽和抽取訊息,它用於一行中分成數個「字段」來處理。適合處理 小型資料。

範例:

     cat /etc/passwd | awk '{FS=":"}$3


執行方式,如:

 awk [-Field-separator] 'commands' input-file(s)

真正的awk命令,[-F域分隔符號]是可選的,awk默認使用空格分隔,因此如果要瀏覽域間有空格的文本,不必指定這個選項,但如果瀏覽如passwd文件,此文件各域使用冒號作為分隔符,則必須使用-F選項:   awk -F : 'commands' input-file


awk執行時,其瀏覽標記為$1,$2...$n,這種方法稱為域標記。使用$1,$3表示參考第1和第3域,注意這裡使用逗號分隔域,使用$0表示使用所有域。例如:

 

awk '{print $0}' temp.txt > sav.txt  

 

表示列印所有領域並將結果重新導向至sav.txt .txt | tee sav.txt 

 

 和上例相似,因此不同的是將在螢幕上顯示出來

 

awk '{print $和第4域

awk 'BEGIN {print "NAME  GRADEn----"} {print $1"t"$4}' temp.txt 


 

 

的表示

內容的第一行前加上"NAME  GRADEn-------------",同時內容以tab分開


 

awk 'BEGIN {print "being"} {print $1} END { print "end"}' temp 

 

同時列印訊息頭和訊息尾

條件運算、~匹配正規表示式、!~不符正規表示式

 


    匹配:awk '{if ($4~/ASIMA/) print $0}' temp 表示如果第四個域包含整個域包含整條

 

    精確配對:awk '$3=="48" {print $0}' temp    只列印第3域等於"48"的記錄

 整筆不含ASIMA的記錄

 

    不等於:  awk '$1 != "asima"' temp

 

  

 

 收到第四個字元是a的記錄,符號'^'代表行首,符合'.'代表任意字元

 

    或關係匹配: awk '$0~/(abc)|(efg)/' temp   使用|時,語句需要括起來

 

    AND與關係:  awk '{if ( $1=="a" && $2=="b" ) print $0}' temp $1=="a" || $1=="b") print $0}' temp

 

  awk內建變數:

例: aw 'END {print NR}' temp  條數

 

    awk '{print NF,NR,$0} END {print FILENAME}' temp

 

   }0記錄且包含Brown

 

    NF的另一用法:  echo $PWD | awk -F/ '{print $NF}'   顯示目前目錄名稱

}條件類型2{動作2} ...' filename

# last | awk '{print $1 "t" $3}'

NF 每一行($0)擁有的欄位總數 

NR 目前awk 所處理的是「第幾行」 資料 

FS 指定分隔符,預設一個空格鍵


FS 指定分隔符,預設一個空格鍵


🎜FS 指定分隔符,預設一個空格鍵🎜🎜🎜🎜FS 指定分隔符,預設一個空格鍵🎜🎜🎜🎜FS 指定分隔符,預設一個空格鍵🎜🎜🎜🎜FS
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:Linux awk 指令下一篇:Linux awk 指令