awk 最基本功能是在檔案或字串中基於指定規則瀏覽和抽取訊息,它用於一行中分成數個「字段」來處理。適合處理 小型資料。
範例:
cat /etc/passwd | awk '{FS=":"}$3
執行方式,如:
awk [-Field-separator] 'commands' input-file(s)
真正的awk命令,[-F域分隔符號]是可選的,awk默認使用空格分隔,因此如果要瀏覽域間有空格的文本,不必指定這個選項,但如果瀏覽如passwd文件,此文件各域使用冒號作為分隔符,則必須使用-F選項: awk -F : 'commands' input-fileawk '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"的記錄
收到第四個字元是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 指定分隔符,預設一個空格鍵