天天看點

awk記錄和域



                                                      Awk記錄和域

       awk認為輸入的檔案是結構的,将每個輸入檔案行定義為記錄,行中的每個字元串定義為域,域之間用空格、TAB鍵或其他符号分隔,這些符号叫做分隔符。

       awk預設空格鍵是分隔符,TAB鍵被認為是連續的空格鍵來處理(兩個或多個連續的空格鍵或tab鍵當作一個分隔符處理)。

       awk可以用-F選項改變分隔符(-F表示改變分隔符,-f表示調用awk腳本);還可以通過在BEGIN字段設定環境變量FS來改變分隔符。舉例:

        awk  -F“\t”  '{print $3}' /proc/devices                             //将分隔符該做 /t  TAB鍵

        awk    ' BEGIN {FS = “\t”}{print$3} ' /proc/devices       //将分隔符該做 /t  TAB鍵

      awk定義域操作符$指定執行動作的域,域操作符$後面跟的數字和變量來辨別域的位置,每條記錄的域從1開始編号,$1表示第一個域,$2表示第二個域,$0表示所有域。舉例(分隔符為空格鍵):

                 Li                                  Hua                1234567

                   (n個空格)                         (n個TAB鍵)

          第一個域($1)              第一個域($2)                   第一個域($3)

      awk '{print $1 $2 $3}' input                                                                //列印三個域的字元串

      awk 'BEGIN{one = 1; two = 2}{print $(one+two)}' input                 //列印第三個域的字元串

      awk '{print $0}' input                                                                           //列印所有域的字元串

     不同的輸入檔案,需要根據實際情況設定相應的分隔符,也可以通過正規表達式将分隔符設定為多個字元。示例:

  1. FS = “\t”               将一個tab鍵作為分隔符
  2. FS = “\t+”          将一個或多個tab鍵作為分隔符

    對記錄 waz\t\tcq, 1會解釋為       waz  空域 cq三個域 , 2 會解釋為        waz  cq 兩個域

本文完全參照           <linux shell 程式設計從初學到精通>    華清遠見嵌入式教育訓練中心  伍之昂等編著