2013年7月16日 星期二

一篇 awk 文章筆記

如何在 Linux 與 GnuCash 上使用 Awk 進行文字搜尋與排序

筆記:awk
  • 處理文字檔案的命令檔語言
  • 將檔案中的每一行視為個別的記錄,一行中的每一個項目則是個別的欄位。
  • 對每一行都會套用一個「樣式{動作}」,如果符合樣式,就執行指定的動作。如果沒有樣式,表示對每一行都執行該項動作;如果沒有動作,表示要顯示符合樣式的行。
  • 經典的方式是以 /etc/passwd 來作說明,列出 UID 與用戶名稱
    • $ awk -F":" '{ print $3 " " $1 }' /etc/passwd 
    • -F 用來定義欄位分隔字元,預設是 tab 或空白
    • $0 代表整行,$3 是第三個欄位 UID,$1 是第一個欄位用戶名稱
  • 搜尋文字,顯示區塊 (grep 難以作到)
    • 語法:awk '/開始樣式/,/結束樣式/'
    • 從完整 lspci 輸出中找出特定設備
      • $ lspci -v | awk '/VGA/,/^$/'
      • /^$/ 會找出文字區塊間的空白行
  • 截取不重複記錄並儲存在新的檔案中 
    • $ awk '!x[$0]++' filewithdupes > newfile
  • 要對正規表示式有不錯的理解,作者推薦 Mastering Regular Expressions 這本書

沒有留言:

張貼留言

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...