1. 程式人生 > >2.awk預定義變數

2.awk預定義變數

預定義變數

就是awk事先定義的變數,不需要自定義就能直接驚醒使用的變數。

這裡介紹  FS  OFS  RS ORS  NR FNR NF FILENAME的簡單用法。

$n 前面已經講過 表示第n個欄位  $0 表示整條記錄


FS  filed separater 欄位分隔符
預設的欄位分隔符是空格
awk 'BEGIN{FS = "a"}{print $2}' a.txt
設定欄位分隔符為 a
或者使用 -F
awk -F "a|c" '{print $2}' a.txt
設定a或c為欄位分割符
  
OFS  上面的FS是輸入的欄位分割符 OFS表示output 欄位分隔符
awk 'BEGIN{OFS = "|"}{print $1,$2}' a.txt
第一個欄位和第二個欄位之前輸出時用 | 分割。
 
RS record separater 記錄分隔符 
預設的記錄分隔符是\n
用法和之前的欄位分隔符FS 相同


ORS 輸出記錄分隔符


NR number of record  行號
awk '{print NR, $0}' b.txt
列印行號以及全部欄位


FNR file number of record   檔案行號
在處理多個檔案的時候,使用FNR可以按檔案輸出行號


NF number of filed 欄位數目
awk —F ":" '{print NF}' a.txt
輸出檔案中每行欄位的數目


FILENAME 被awk 處理的檔名稱
awk '{print FILENAME}' a.txt
輸出的結果應該是檔案行數個檔名


操作例項


檔案內容:
name:tom
tel:13575767654
gender:male


name:john
tel:18975767654
gender:male


name:kitty
tel:15075789654
gender:female


要求:輸出姓名和性別


操作: awk 'BEGIN{RS = "\n\n"}{print $1,$3}' e.txt
\n\n 表示空行,以空行表示記錄分隔符,輸出第一個和第三個欄位。