2011年8月20日

awk簡易筆記

awk是種可以處理資料,且產生格式化報表的語言,在shell程式當中廣泛的被使用。awk的工作方式是讀取資料檔,將每一列資料視為一筆記錄(record),每筆記錄以欄位分割符號分成若干個欄位(類似csv),然後輸出各個欄位之值。

#ps auxw|awk '{print $2}'
以上指令印出 ps auxw 指令中,每一列資料的第二欄(pid) 

awk處理記錄的方法,是將指定的pattern套用到每一筆記錄當中,若記錄符合指定的pattern,則執行指定的action。action與pattern任一個可以省略,如果只有pattern,表示只要對符合pattern的記錄作用。如果只有action,表示要處理所有的記錄。

awk常用的格式

  • awk 'pattern' files: 把符合apttern的資料列全部列出
  • awk '{action}' files: 對每一列都執行action的動作
  • awk 'pattern {action}' files: 對符合pattern的資料列,執行action的動作

#awk '/http/' web.log
顯示web.log中含有http pattern的資料列 

#awk '/http/ {print $1, $2}' web.log
顯示web.log中含有http pattern的第一欄及第二欄的資料

#awk -F: '/^admin/ {prnt $3, $4}' /etc/passwd
用-F指定欄分割符號為:,印出admin為開頭的第三欄及第四欄的資料 

Example:

#ifconfig|grep 'inet addr:'|grep Bcast|awk '{print $2}'|awk -F: '{print $2}'
取得網路卡的ip address